1

我制作了以下结构的包:

test.py
pakcage1/
    __init__.py
    module1.py
    module2.py

test.py文件中,带有代码

from package1 import *

我想要它做的是

from numpy import *
from module1 import *
from module2 import *

我应该在__init__.py文件中写什么来实现这一点?

目前在我的__init__.py文件中,我有

from numpy import *
__all__ = ['module1','module2']

这并没有给我我想要的。这样 numpy 根本就不会被导入,并且模块被导入为

import module1

而不是

from module1 import *
4

2 回答 2

4

如果你想要这个,你__init__.py应该包含你想要的:

from numpy import *
from module1 import *
from module2 import *

当您这样做时from package import *,它会导入包中定义的所有名称__init__.py

请注意,如果您导入的模块之间存在名称冲突,这可能会变得很尴尬。如果您只想方便地访问这些模块中的功能,我建议您改用以下内容:

import numpy as np
import module1 as m1
import module2 as m2

也就是说,导入模块(不是它们的内容),但使用较短的名称。然后,您仍然可以使用 numpy 之类的东西访问 numpy 内容,np.add它只添加三个输入字符,但可以防止不同模块之间的名称冲突。

于 2013-04-27T19:32:23.610 回答
2

我同意 BrenBarn 的建议,但请注意,使用 from x import * 将所有内容导入一个单一命名空间通常是一个坏主意,除非您确定不会有任何冲突的名称。

我认为使用 import package.module 仍然更安全,尽管它确实需要额外的击键。

于 2013-04-27T19:40:14.350 回答