将模块转换为包时出错
Error converting module to a package
我有一个包含许多简单辅助函数的模块,但它越来越大而且维护起来很乏味。我想把它分成一个简单的包。我的包目录是在 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 文件的维护影响。有什么经验或最佳做法可以分享吗?谢谢。
您还应该从包中 import a
和 b
以便 dir
列出它们。如果要在导入包时自动导入包中的模块,请在 __init__.py
中指定,方法是在 __init__.py
中添加要导入的模块的导入语句
test # package directory
├── module1.py
├── module2.py
├── __init__.py
要在每次导入包时导入 module1,__init__.py
必须包含以下内容。
import module1
您可以使用 from test import module2
从 test
包导入模块
编辑:
只要不同的模块有不同的用途,最好将所有相关的帮助程序放在自己的模块中。导入包时默认要导入的所有模块都应在 __init__.py
文件中指定。其他的可以在需要时导入。即使你多次导入一个模块,它们也不应该有任何性能影响,它们只在找到时初始化一次 here.
我认为最简单的答案是像这样导入您想要的模块:
import test.a
import test.b as b # variant if you don't want the package name
然后就可以调用模块中的函数了:
test.a.foo()
b.bar()
我有一个包含许多简单辅助函数的模块,但它越来越大而且维护起来很乏味。我想把它分成一个简单的包。我的包目录是在 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 文件的维护影响。有什么经验或最佳做法可以分享吗?谢谢。
您还应该从包中 import a
和 b
以便 dir
列出它们。如果要在导入包时自动导入包中的模块,请在 __init__.py
中指定,方法是在 __init__.py
test # package directory
├── module1.py
├── module2.py
├── __init__.py
要在每次导入包时导入 module1,__init__.py
必须包含以下内容。
import module1
您可以使用 from test import module2
test
包导入模块
编辑:
只要不同的模块有不同的用途,最好将所有相关的帮助程序放在自己的模块中。导入包时默认要导入的所有模块都应在 __init__.py
文件中指定。其他的可以在需要时导入。即使你多次导入一个模块,它们也不应该有任何性能影响,它们只在找到时初始化一次 here.
我认为最简单的答案是像这样导入您想要的模块:
import test.a
import test.b as b # variant if you don't want the package name
然后就可以调用模块中的函数了:
test.a.foo()
b.bar()