python 包导入模块使用 __init__.py

标签 python python-2.7 module package

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

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/

相关文章:

python - Pyparsing:语法在解析具有指数和对数函数的算术表达式时无法解析空格

Python - 从纯文本邮件中提取正文

python - gensim 的 pip 安装 - 'ascii' 编解码器无法解码位置 53 中的字节 0xe2

python - Networkx:可视化 MultiGraph 时重叠边

python - str.encode(编码 ='utf-8' ,错误 ='strict' )是否有可能引发 UnicodeError?

android - 应用看不到模块的 Activity

amazon-web-services - 如何部署具有多个角色的 Terraform 模块?

python - 无法清除python shell

Python导入类错误,试图理解根目录__init__.py

python - 将 python 模块导入例程或类定义有什么问题吗?