我想将多个python模块保留在同一回购中,以便更轻松地管理它们并同时处理它们。
这些模块是打包的名称空间包,因此我无法在同一级别拥有根,其中有4个根,并且以后可能还会更多。
这是我的结构:
repo/
modules/
foo_a/
setup.py
VERSION
foo/
__init__.py
a/
foo_b/
setup.py
VERSION
foo/
__init__.py
b/
VERSION文件是分开的,并且跟踪不同的版本。上面的__init__.py
文件是the special type described here。
当前,当其中的VERSION文件更改时,我会自动构建相应的模块。
我想要的是能够从回购协议的根目录安装整个软件包以及所有名称空间软件包。所以我可以做pip install .
。要么将所有内容都安装为一个软件包(foo_all
),要么单独安装每个模块。
一个用例是,大多数人都使用所有模块,并且他们想要易于安装的东西,但是有时候我只想能够安装其中一个模块。
关键是您可以运行:
pip install repo
然后这些Python命令成功。
from foo import a
from foo import b
关于如何执行此操作的任何想法?
我已经看过setuptools.find_namespace_packages()
函数,但是看起来它只是Python3,而且我不确定是否正是我所需要的。我无法升级到Python3,因为它是针对客户端的,并且依赖于令人难以置信的Python2 API。
还看到了package_dir
的{{1}}选项,但是那是因为所有软件包都位于不同的文件夹中。我不能将所有软件包都放在不同的文件夹中,因为单个文件会重叠(setuptools.setup()
,setup.py
,VERSION
)
答案 0 :(得分:1)
可能将foo.a
和foo.b
作为独立项目分发,同时将空的foo
项目分发给其他install_requires
。
整个设置在Python Packaging User Guide on "Packaging namespace packages"中进行了描述。