下面是一个场景:我有一个顶级包,其中一个子包中包含大量代码。这家伙看起来像这样:
packagename
__init__.py
clients
http_client.py
otherclient.py
__init__.py
otherpackage
etc
我需要将clients
转换成一个名称空间包,这样我就可以分发一个单独的repo,该repo为其他客户机提供额外的功能(它们具有不同的依赖关系,因此需要单独打包,以便我们的构建工作)
问题是我在扩展子包而不是顶层包。例如,依赖的新包如下所示:
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
中有一些值,这些值是由子包导入的。这似乎是名称空间模块包的问题。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐