带有多个模块和打包名称空间的Python 2.7软件包安装

时间:2019-09-19 17:41:28

标签: python python-2.7 pip package setup.py

我想将多个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.pyVERSION

1 个答案:

答案 0 :(得分:1)

可能将foo.afoo.b作为独立项目分发,同时将空的foo项目分发给其他install_requires

整个设置在Python Packaging User Guide on "Packaging namespace packages"中进行了描述。