2013-06-17 3 views
17

Est-il possible de forcer virtualenv à utiliser les derniers setuptools et pip disponibles à partir de pypi? Essentiellement, je cherche le vis-à-vis du drapeau --never-download.Comment forcer virtualenv à installer les derniers setuptools et pip de pypi?

Actuellement, lorsque je crée un nouveau virtualenv, il utilise les versions locales (anciennes) fournies avec 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 
[...] 

Répondre

11

Il n'est pas pris en charge pour des raisons de sécurité.

En utilisant virtualenv.py comme un script isolé (à savoir sans associé répertoire virtualenv_support) n'est plus pris en charge pour la sécurité raisons et échouera avec une erreur. Parallèlement à cela, --never-download est maintenant toujours épinglé à True, et est seulement maintenu dans le court terme pour la compatibilité descendante (Pull # 412).

Je ne peux pas utiliser l'option --extra-search-dir soit parce qu'il est actuellement cassé https://github.com/pypa/virtualenv/issues/327

On dirait que la seule option est de simplement attendre que les mainteneurs de virtualenv pour mettre à jour les paquets empaquetés?

8

Vous pouvez mettre à niveau pip après avoir installé votre virtualenv à l'aide de pip install -U pip.

Je suis sûr que vous pourriez écrire un script bootstrap pour automatiser cette étape.

2

J'avais besoin de la dernière bibliothèque setuptools, et le drapeau --extra-search-dir ne fonctionnait pas pour moi (même s'il a été corrigé apparemment). Cependant, faire un virtualenv sans setuptools et ensuite installer directement à partir de PyPi a bien fonctionné. E.g. de mettre en place un virtualenv appelé test:

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

Test avec

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

montre la bonne version.

+0

solution très agréable! – pymarco

0

Miser sur excellent answer de ematsen J'ai fait un script bash qui fonctionne avec 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

je suis tombé sur le même problème, et je l'ai fixé par la mise à niveau setuptools.

Si env est votre env virtuelle, exécutez ce qui suit:

$ env/bin/pip install --upgrade setuptools

Questions connexes