具有相似名称子包的Python命名空间包

时间:2014-02-27 09:14:33

标签: python packaging setup.py

这是一个场景:我有一个顶层包,其中包含一个子包中的大量代码。这家伙看起来像这样:

packagename
  __init__.py
  clients
    http_client.py
    otherclient.py
    __init__.py
  otherpackage
  etc

我需要将clients转换为命名空间包,以便我可以为其他客户端分发一个具有附加功能的独立存储库(它们具有不同的依赖关系,因此需要单独打包以使我们的构建工作)

问题是我正在扩展子包而不是顶级包。例如,依赖的新包看起来像这样:

packagename
  __init__.py
  clients
    __init__.py
    pipeline_client.py

魔法pkgutil.extend_path的组合似乎没有效果。我已在各种__init__.py文件中尝试了以下行的所有可能组合。

from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

有没有办法确保子路径得到扩展?这样的事情是否可能(如在依赖命名空间包中命名)?我应该在依赖的子包中重命名我的子包吗?

修改

我还应该注意,在父包中,__init__.py内部有一些值,这些值是由子包导入的。这似乎是名称空间模块包的问题。

0 个答案:

没有答案