我想在主模块中有几个python子模块,但我想将它们作为单独的python包分发。所以包A应该提供'my_data.source_a',包B应该提供'my_data.source_b',......等等。
我发现我必须使用命名空间包,但是试图弄清楚细节,我找到了多个PEP来解决这个问题。 PEP 420似乎是最新的,它建立在PEP 402和PEP 382之上。
对我而言,目前还不清楚实施的不同PEP的状态。所以我的问题是:http://pythonhosted.org/distribute/setuptools.html#namespace-packages仍然是要走的路,或者我应该如何构建我的命名空间包?
答案 0 :(得分:5)
Python的最新版本Python 3.7使用native namespace packages方法创建在PEP 420中定义的名称空间包。
当前有三种创建名称空间包的方法:
pip
安装,则建议使用此方法。pip
和python setup.py install
安装的新软件包,建议使用此方法。答案 1 :(得分:1)
对于Python 3.3+,PEP 420 -- Implicit Namespace Packages是可行的方法。
只需从两个包中删除 __ init __。py ,然后添加
setup(
...
namespace_packages=['package_name']
...
)
到 setup.py 。 查看示例here。