将两个Python包捆绑在一起

时间:2014-09-10 22:03:47

标签: python setuptools software-packaging

我有一个Python包myapp,它取决于Python包theirapp

theirapp被其他人使用,可能偶尔会更新,但它不会托管在PyPI上。

我目前的存储库设置如下:

my-app/
    myapp/
        __init__.py
    requirements.txt
    their-app/
        setup.py
        theirapp/
            __init__.py

我的requirements.txt文件包含以下行(等等):

./their-app/

their-app不托管在PyPI上,但我想确保安装了最新版本。到目前为止,我一直在下载包含my-app并输入pip install -U requirements.txt并手动使用该应用程序的zip文件。

我想制作一个可安装的Python包。理想情况下,我想下载my-app.zip文件并输入pip install my-app.zip来安装myapptheirapp以及任何其他依赖项。

这可能吗?如果没有,处理这种情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可能只需将theirapp捆绑为项目的一部分,然后将其导入为myapp.contrib.theirapp。如果这两个项目都是在git中进行版本控制,那么你可以将它作为submodule来实现,但它可能会增加维护者的复杂性。

pip如何处理类似的问题: https://github.com/pypa/pip/tree/develop/pip/_vendor

您可以将pip导入捆绑的供应商软件包视为pip._vendor.theirapp