2014-01-13 5 views
11

Как управлять версией pip, которая используется в только что созданной виртуальной среде? Я считаю, что я уничтожил все другие версии пипса из ОС, но все же mkvirtualenv получает пип-1.5 откуда-то! Я хочу, чтобы он использовал pip 1.4.1 в virtualenv.Управление версией pip в virtualenv

$ which pip 
/usr/local/bin/pip 
$ pip --version 
pip 1.4.1 from /usr/local/lib/python2.7/dist-packages/pip-1.4.1-py2.7.egg (python 2.7) 
$ pip install virtualenv virtualenvwrapper 
    <snip...>  
Successfully installed virtualenv virtualenvwrapper 
Cleaning up... 
$ source ~/.bashrc 
$ mkvirtualenv spam 
New python executable in spam/bin/python 
Installing setuptools, pip...done. 
(spam)$ which pip 
/home/wim/.virtualenvs/spam/bin/pip 
(spam)$ pip --version 
pip 1.5 from /home/wim/.virtualenvs/spam/local/lib/python2.7/site-packages (python 2.7) 

ответ

3

Достаточно просто заменить пип, который устанавливается в вашей виртуальной среде. В виртуальной среде активные, просто выполните следующую команду:

pip install pip==1.4.1 
+0

Спасибо, это будет делать сейчас, но я все еще интересно знать, как контролировать пип версию без присмотра – wim

+0

Это будет работать, только если в данный момент установлена ​​версия семечковые работ. К сожалению, это не всегда так, как, например, при использовании устаревшей версии Python. – Sardathrion

+0

Не решает вопрос. Дело в том, что каждый должен делать это каждый раз, когда создается новый virtualenv, что утомительно. – user1071847

11

От чтения источника virtualenv, похоже, устанавливается пип от источника включен файл обработано virtualenv. В virtualenv 1.10.1 это pip-1.4.1.tar.gz в каталоге site-packages/virtualenv_support (он получает setuptools с того же места). Вы можете реально заменить этот архив для управления версией; virtualenv.py, по крайней мере, версия у меня есть, не важно, какая версия пип есть:

if not no_pip: 
     install_sdist('Pip', 'pip-*.tar.gz', py_executable, search_dirs) 

Вы также можете передать опцию --no-pip, а затем установить версию вы хотите от источника.

В virtualenv 1.11 он ищет файл колес (например, pip-*.whl) вместо tar.gz, но кроме этого он действует одинаково (спасибо @wim для обновления).

+0

Это правда в virtualenv '1.10.1', но в' 1.11' оно больше не ищет .tar.gz, вместо этого они получают pip из [файла колеса] (http://www.python.org/dev/Peps/PEP-0427 /). – wim

+0

Мне удалось создать эту идею, создав колесо pip-1.4.1. Я отредактирую ваше решение с помощью шагов, так как я не мог найти места для загрузки файлов .whl в Интернете. – wim

+0

Поцарапать это. То, что я на самом деле не работало (оно установило правильную версию pip, но не в том месте). Поэтому я откат назад, и я все еще ищу исправление :( – wim

5

Для меня я просто обновил pip/virtualenv/virtualenvwrapper на своей машине (не внутри virtualenv). Впоследствии созданные virtualenvs имели обновленную версию.

deactivate 
pip install --upgrade pip virtualenv virtualenvwrapper 
mkvirtualenv ... 
+0

Спасибо. Работал для меня (работает Python 2.7 .11 на Mac OSX 10.10.5). – user1071847

Смежные вопросы