Skip to main content
 首页 » 编程设计

python 包导入模块使用 __init__.py

2025年05月04日16mfryf

我做了一个如下结构的包:

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 的东西,它只添加三个字符的输入,但可以防止不同模块之间的名称冲突。