我有一个具有以下结构的 Python 3 项目:
project/
|
+--root/
|
+--__init__.py
|
+--sub/
|
+--__init__.py
|
+--actualcode.py
我想使用“命名空间包”,以便我的库与单独项目中的其他相关库共享一个公共(public)命名空间。导入语句应如下所示:
from root.sub.actualcode import something
根文件夹中的__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 用作命名空间?
请您参考如下方法:
可以使用 distribute 构建命名空间包.诀窍是将以下行添加到 setup 的参数中:
setup(
# ...
namespace_packages = ["root"]
)
问题中示例的其余部分是正确的。
