【发布时间】:2020-03-07 06:40:37
【问题描述】:
我有一个 heroku 项目正在尝试使用 pip install -r requirements.txt 安装 Django reusable app(这不是来自官方 heroku/python buildpack 的确切命令,但它基本上是这样做的)。
问题是我的 Django 可重用应用程序本身有一个来自 Github 公共存储库的需求。
pip install dependency links中的几个答案指向:
- 依赖链接语法being not compatible with pip 19
- 新语法(即
package @ git+protocol://...)当然不兼容旧版本的 pip。
我的 Django 项目可以以不同的方式部署:Heroku、本地、Docker(开发和产品)。这些部署方法中的大多数都有最新版本的 pip。
Heroku 的 python buildpack 有 Pip 9.0.2
我的其他部署方法具有 Pip 19,因此它们在读取需求的方式上存在不兼容性,我无法找到适用于两者的方法。
对于旧版本的 pip,我在我的setup.py:
setup(
# [...]
install_requires=[
"my_package == x.y.z"
],
dependency_links=["git+https://github.com/account/package/tarball/master#egg=my_package-x.y.z"]
)
而对于 Pip 19,我愿意:
setup(
# [...]
install_requires=[
"my_package @ git+https://github.com/company/package.git"
],
)
我尝试分叉存储库并将版本增加到 pip 的最新版本。它确实有效,除了pip-diff 中的错误,这似乎对构建没有影响。
还需要注意的是,由于 buildpack 有一个缓存系统,您通常只会注意到这个问题一次,直到您需要更新版本的库。但是,例如评论应用程序就会出现问题。
那么这里的解决方案是什么?我可以:
- 将所有其他部署方法降级为使用依赖链接的旧版本 pip,包括我的所有本地开发设置
- 使用 Heroku 的 python buildpack 的分叉版本,并更新了 pip(但 pip-diff 需要修复)
- 从 github 中删除依赖项,并在项目存储库级别而不是可重用应用级别添加这些依赖项。
- 向官方 repo 提交 PR,以便升级 pip
这就是我能想到的。解决方案 1. 和 2. 真的很糟糕,恕我直言,3. 更糟糕,4. 可能需要时间,我真的负担不起。
有更好的想法吗?
【问题讨论】: