Skip to main content
 首页 » 编程设计

python之如何在 Python 中创建命名空间包

2025年05月04日7exmyth

我有一个具有以下结构的 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"] 
) 

问题中示例的其余部分是正确的。