我做了一个如下结构的包:
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 *
最佳答案
如果你想要这个,你的 __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 的东西,它只添加三个字符的输入,但可以防止不同模块之间的名称冲突。
关于python 包导入模块使用 __init__.py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16255910/