我有一个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
的zip文件,并键入pip install -U requirements.txt
并手动使用该应用程序。
我想制作一个可安装的Python包。理想情况下,我想下载一个my-app.zip
文件并键入pip install my-app.zip
来安装myapp
、theirapp
和任何其他依赖项。
这可能吗?如果没有,处理这种情况的最佳方法是什么?
您可能只需要将theirapp
绑定为项目的一部分,并将其导入为myapp.contrib.theirapp
。如果这两个项目都是用git进行版本控制的,您可以将其作为子模块来实现,但这可能会增加维护人员的复杂性。
pip如何处理类似的问题:https://github.com/pypa/pip/tree/develop/pip/_vendor
您可以看到pip将捆绑的供应商包导入为pip._vendor.theirapp
。