2013-06-17 11 views
17

Czy można zmusić virtualenv do korzystania z najnowszych narzędzi setupto pip z pypi? Zasadniczo szukam naprzeciwko z flagi --never-download.Jak zmusić virtualenv do zainstalowania najnowszych narzędzi setupto pip z Pypi?

Obecnie, kiedy tworzę nowy virtualenv, używa on lokalnych (starych) wersji, które są dostarczane w pakiecie z 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 
[...] 

Odpowiedz

11

Nie jest obsługiwany ze względów bezpieczeństwa.

Korzystanie virtualenv.py jako pojedyncze skryptu (czyli bez skojarzonego katalogu virtualenv_support) nie jest już obsługiwany dla bezpieczeństwa przyczyn i zakończy się niepowodzeniem z błędem. Wraz z tym, - anytime-download jest teraz zawsze przypięty do wartości True i jest utrzymywany tylko w krótkim okresie czasu w celu zapewnienia kompatybilności wstecznej (Pull # 412).

nie mogę skorzystać z opcji --extra-search-dir albo dlatego, że jest to obecnie uszkodzony https://github.com/pypa/virtualenv/issues/327

Wygląda na to, że jedynym rozwiązaniem jest po prostu czekać na opiekunowie virtualenv zaktualizować dołączonych pakietów?

8

Możesz zaktualizować pip po zainstalowaniu virtualenv za pomocą pip install -U pip.

Jestem pewien, że można napisać skrypt bootstrap, aby zautomatyzować ten krok.

2

Potrzebowałem najnowszej biblioteki setuptools, a flaga --extra-search-dir nie działała dla mnie (mimo że została naprawiona najwyraźniej).

Jednak tworzenie virtualenv bez setuptools, a następnie instalacja bezpośrednio z PyPi działało świetnie. E.g. założyć virtualenv nazwie test:

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

Testowanie z

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

pokazuje właściwą wersję.

+0

bardzo ładne rozwiązanie! – pymarco

0

Opierając się na ematsen na excellent answer zrobiłem skrypt bash, który współpracuje z 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] 
0

wpadłem na ten sam problem, i naprawiłem go poprzez modernizację setuptools.

Jeśli env jest wirtualną env, uruchom następujące:

$ env/bin/pip install --upgrade setuptools