我有一个具有以下结构的 Python 3 项目:
project/
|
+--root/
|
+--__init__.py
|
+--sub/
|
+--__init__.py
|
+--actualcode.py
我想使用“命名空间包”,以便我的库与单独项目中的其他相关库共享公共命名空间。导入语句应该如下所示:
from root.sub.actualcode import something
The __init__.py
根文件夹中的文件包含以下语句来创建命名空间包:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
但导入时无法引用代码root.sub
。它仅在我编写时才有效:
from sub.actualcode import something # doesn't work with "root.sub..."!
我应该做什么来使用root
作为命名空间?
命名空间包可以使用以下命令构建分发 http://packages.python.org/distribute/setuptools.html#namespace-packages。诀窍是将以下行添加到参数中setup
:
setup(
# ...
namespace_packages = ["root"]
)
问题中示例的其余部分是正确的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)