我用以下结构制作了一个包:
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 *
答案 0 :(得分: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
即,导入模块(不是它们的内容),但是使用较短的名称。然后你仍然可以使用类似np.add
的东西访问numpy东西,它只添加三个字符的输入,但可以防止不同模块之间的名称冲突。
答案 1 :(得分:2)
我是第二个BrenBarn的建议,但是要注意,使用from x import将所有内容导入一个命名空间通常是一个坏主意,除非您确定不会有任何冲突的名称。
我认为使用import package.module仍然更安全,但它确实需要额外的击键。