我有一些或多或少独立的包(见下面的apack和bpack)。我希望它们都能这样提供:
import mycompany.apack.somemodule
import mycompany.bpack.somemodule
既然他们是独立的,我就分开了设置.py它们中的每一个都将它们部署到PyPi中,因此不同的发布周期也不同。在
这里有一个问题:是否可以使用单独的发布过程来拥有根包的子包(每个子包都有自己的子包)设置.py)? 如何做到这一点?
我试过了,但没能成功。 我的电流设置.py看起来像这样:
^{pr2}$这些设置.py正在dist packages文件夹中创建以下结构:
^{3}$现在,由于我的mycompany没有\uuuinit\uuuy.py(这是我的猜测),我得到以下错误:
>>> import mycompany.apack.somemodule
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named mycompany.apack.somemodule
简短回答
使用
setuptools
项目中的pkg_resources.declare_namespace
。在冗长的回答
您可以使用setuptools而不是distutils。它支持依赖关系管理和名称空间
对于apack,项目结构如下所示:
对于apack,您的
^{pr2}$setup.py
将如下所示:标记为(1)的
__init__.py
将如下所示:bpack看起来非常相似,只是用
apack
替换为bpack
。在假设还有一个cpack,它依赖于apack和bpack。在
它看起来很相似,但
setup.py
将如下所示:如果安装了cpack,则也将安装apack和bpack。 由于命名空间声明,因此不会发生冲突
相关问题 更多 >
编程相关推荐