Ответ 1
Достаточно легко заменить пип, который устанавливается в вашей виртуальной среде. В активной виртуальной среде просто выполните следующую команду:
pip install pip==1.4.1
Как управлять версией pip
, которая используется в только что созданной виртуальной среде? Я считаю, что я уничтожил все другие версии пипса из ОС, но все же mkvirtualenv получает пип-1.5 откуда-то! Я хочу, чтобы он использовал pip 1.4.1 в 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)
Достаточно легко заменить пип, который устанавливается в вашей виртуальной среде. В активной виртуальной среде просто выполните следующую команду:
pip install pip==1.4.1
Из чтения источника virtualenv, похоже, что pip установлен из исходного tarfile, включенного в 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 для обновления).
Для меня я просто обновил pip/virtualenv/virtualenvwrapper на своей машине (не внутри virtualenv). Впоследствии созданные virtualenvs имели обновленную версию.
deactivate
pip install --upgrade pip virtualenv virtualenvwrapper
mkvirtualenv ...