Как заставить virtualenv устанавливать последние setuptools и pip из pypi?

Можно ли заставить virtualenv использовать последние setuptools и pip, доступные из pypi? По сути, я ищу напротив флага --never-download.

В настоящее время, когда я создаю новый virtualenv, он использует локальные (старые) версии, входящие в комплект с virtualenv.

$ v.mk testvenv
New python executable in testvenv/bin/python
Installing setuptools............done.
Installing pip...............done.
$ pip show setuptools
---
Name: setuptools
Version: 0.6c11
Location: /Users/cwilson/.virtualenvs/testvenv/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg
Requires: 
$ pip search setuptools
[...]
setuptools                - Easily download, build, install, upgrade, and
                            uninstall Python packages
INSTALLED: 0.6c11
LATEST:    0.7.2
[...]

Ответы

Ответ 1

Он не поддерживается по соображениям безопасности.

Использование virtualenv.py в качестве изолированного script (т.е. без ассоциированного virtualenv_support) больше не поддерживается для обеспечения безопасности причины и с ошибкой. Наряду с этим, -never-download теперь всегда привязана к True, и поддерживается только в Краткосрочная совместимость (Pull # 412).

Я не могу использовать параметр --extra-search-dir либо потому, что он в настоящее время сломан https://github.com/pypa/virtualenv/issues/327

Похоже, единственный вариант - просто дождаться, когда поддерживающие virtualenv будут обновлять связанные пакеты?

Ответ 2

Вы можете обновить пипс после установки своего виртуального пользователя с помощью pip install -U pip.

Я уверен, что вы можете написать bootstrap- script для автоматизации этого шага.

Ответ 3

Мне понадобилась последняя библиотека setuptools, и флаг --extra-search-dir не работал у меня (хотя он был исправлен, по-видимому).

Однако создание virtualenv без setuptools, а затем установка непосредственно из PyPi отлично работала. Например. для настройки virtualenv с именем test:

virtualenv --no-setuptools test
source test/bin/activate
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
easy_install pip

Тестирование с помощью

python -c 'import setuptools; print setuptools.__version__'

показывает правильную версию.

Ответ 4

Основываясь на ematsen отличный ответ Я создал bash script, который работает с virtualenvwrapper

#!/bin/bash
source `which virtualenvwrapper.sh`
mkvirtualenv --no-setuptools $1
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
rm setuptools-*.zip
easy_install pip

# for python version < 2.7.9
# https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
pip install urllib3[secure]

Ответ 5

Я столкнулся с той же проблемой, и я исправил ее, обновив setuptools.

Если env - ваш виртуальный env, запустите следующее:

$ env/bin/pip install --upgrade setuptools