2013-12-22 2 views
4

Я создаю приложение, которое использует photologue и несколько других пакетов, которые имеют photologue в качестве зависимости (например, cmsplugin-photologue). Тем не менее, мне нужно использовать модифицированную версию photologue, размещенную на github. Затем все это будет развернуто на Heroku, что означает, что установки зависимостей выполняются исключительно через файл requirements.txt.Замена зависимости от пользовательских forks с помощью pip

В принципе это делается довольно легко: я могу просто добавить репозиторий в файл требований, как описано here, и он будет установлен. Проблема в том, что оригинал photologue также установлен и заканчивается тем, который используется.

Итак, общий вопрос: using pip, как я могу заменить приложение, которое является зависимостью нескольких приложений с моей собственной версией этого приложения?

ответ

4

просто использовать опцию -U или --upgrade заменить оригинальную упаковку в вашем venv с пользовательской версии:

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

затем в ваших требованиях. 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 
0

This section of the documentation для более старой версии PIP предполагает, что, если PIP находит несколько определений для пакета (например, через --extra-index-url или --find-links), будет использоваться последний матч. К сожалению, я не могу найти эту информацию в текущей документации, поэтому она может быть изменена.

Возможно, что-то подобное в ваших требованиях файл будет работать:

... 
django-photologue 
... 

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