使用pip替换自定义分支的依赖关系

时间:2013-12-22 17:06:51

标签: python git heroku pip requirements.txt

我正在构建一个使用photologue的应用和其他一些以photologue作为依赖关系的应用包(例如cmsplugin-photologue)。但是,我需要使用github上托管的photologue的修改版本。所有这些都将部署在Heroku上,这意味着依赖项的安装只能通过requirements.txt文件完成。

原则上这很容易完成:我可以按照here所述将存储库添加到需求文件中,然后安装它。问题是原始photologue也已安装,并最终使用正在使用的那个。

所以一般的问题是:使用pip,如何用我自己的应用程序版本替换多个应用程序依赖的应用程序?

2 个答案:

答案 0 :(得分:4)

只需使用-U--upgrade选项将您的venv中的原始包替换为您的自定义版本:

cd myapp && venv/bin/pip install -U git+https://github.com/jcomeauictx/django-crispy-forms.git

然后在您的requirements.txt中替换

django-crispy-forms==1.4.0

git+https://github.com/jcomeauictx/django-crispy-forms.git

当你推送到你的heroku实例时,你会看到类似的东西:

-----> Deleting 1 files matching .slugignore patterns.
-----> Python app detected
-----> Uninstalling stale dependencies
       Uninstalling django-crispy-forms-1.4.0:
         Successfully uninstalled django-crispy-forms-1.4.0
-----> Installing dependencies with pip
       Collecting git+https://github.com/jcomeauictx/django-crispy-forms.git (from -r requirements.txt (line 6))
         Cloning https://github.com/jcomeauictx/django-crispy-forms.git to /tmp/pip-AlSPnZ-build
       Installing collected packages: django-crispy-forms
         Running setup.py install for django-crispy-forms
       Successfully installed django-crispy-forms-1.5.0

答案 1 :(得分:0)

对于较旧版本的PIP,

This section of the documentation建议如果PIP找到包的多个定义(例如,通过--extra-index-url--find-links),则将使用最后一个匹配。不幸的是,我无法在当前文档中找到此信息,因此可能已更改。

在您的需求文件中可能会出现这样的情况:

...
django-photologue
...

--find-links https://github.com/jdriscoll/django-photologue