2016-09-19 4 views
0

Я разрабатываю приложение Python/Django, которое выполняется из виртуальной среды (созданной virtualenv).Укажите версию «pip» в разделе требований. Txt

Когда виртуальная среда создается глобальная версия pip копируется во вновь созданную среду по умолчанию, которые могут быть весьма устаревшими (например, версия 1.5.4 из python-pip пакета на Ubuntu 14.04).

Чтобы избежать ручного pip обновления, это звучит как хорошая идея, чтобы прикрепить версию pip в requirements.txt файле, например, добавив следующую строку:

pip==8.1.2

Указание версии pip там также позволит обновить pip во всех средах управляемых приложений (локальных, dev, production), изменив строку в файле требований.

Это звучит как хорошая практика? Есть ли что-то, что может пойти не так с этим подходом?

ответ

0

То, что вы испытываете, вызвано старой версией python-virtualenv, поставляемой с Ubuntu 14.04. Вы должны удалить пакет Ubuntu и установить через пип:

sudo pip install virtualenv 

Затем убедитесь, что у вас есть новейший пип установлен как хорошо.

sudo pip install -U pip 

И вы должны установить эту версию в новых виртуальных средах.

+0

Если 'pip' был установлен с помощью' питона-pip', 'Судо пип установить -U pip' не будет работать. Он скажет вам: 'Не удалять пипс в /usr/lib/python2.7/dist-packages, принадлежащем OS' – tonyo

+0

Затем удалите его с помощью' apt-get', получите https: //bootstrap.pypa. io/get-pip.py и 'sudo python get-pip.py' или' sudo python3 get-pip.py'. –

2

Обратите внимание: pip версия, перечисленная в requirements.txt, будет установлена ​​вместе с другими требованиями. Таким образом, все требования будут установлены по старой версии pip, и версия, указанная в requirements.txt, будет доступна после этого.

Я всегда делаю:

virtualenv /path/to/my/desired/venv/ 
source /path/to/my/desired/venv/bin/activate 
pip install -U pip 
pip install -r requirements.txt 
+0

Хорошая точка. Похоже, имеет смысл делать то и другое, а затем: установить современную версию pip сразу после создания виртуальной среды и указать ее в файле требований.txt для целей документации/более поздних обновлений. – tonyo

+0

Я бы не указал его в файле требований.txt - это, во-первых, ложное требование. Это действительно так, что ваше программное обеспечение не будет правильно установлено со старым пипсом? Я действительно так не думаю. – ElmoVanKielmo