我有一个包含许多简单辅助函数的模块,但它越来越大而且维护起来很乏味。我想把它分成一个简单的包。我的包目录是在 PYTHONPATH 上定义的,如下所示:
test
|--__init__.py <---this is empty
|--a.py
|--b.py
这是以通常的方式导入的(导入测试),但经过检查(dir(test))库不包含模块 a 或 b,仅包含一些顶级属性。我可以提示出了什么问题。谢谢!
下面的解决方案:init 文件现在每次都自动加载我想要访问的模块。这尊重 Python 3.4 固有的绝对路径假设。
from .a import a
from .b import b
跟进: 我的意图是将每个帮助程序脚本作为其自己的模块,从而可能导致许多易于查找和维护的小模块。这是惯用语吗?效率低下?我得到了对 init 文件的维护影响。有什么经验或最佳做法可以分享吗?谢谢。
最佳答案
您还应该从包中导入a
和b
以便dir
列出它们。如果要在导入包时自动导入包中的模块,在__init__.py
中指定,在__init__.py
中添加要导入的模块的import语句。/p>
test # package directory
├── module1.py
├── module2.py
├── __init__.py
要在导入包时导入 module1,__init__.py
必须包含以下内容。
import module1
您可以使用 from test import module2
从 test
包导入模块
编辑:
只要不同的模块服务于不同的目的,最好将所有相关的助手放在它们自己的模块中。导入包时默认要导入的所有模块都应在 __init__.py
文件中指定。其他的可以在需要时导入。即使您多次导入一个模块,它们也不应该有任何性能影响,它们只初始化一次,如发现的那样here .
关于python - 将模块转换为包时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36677288/