298 votes

Mise à niveau de python dans un virtualenv

Est-il un moyen de mettre à jour la version de python utilisée dans un virtualenv (par exemple, si une version de correction qui vient de sortir)?

Je pourrais pip freeze --local > requirements.txt supprimez le répertoire et pip install -r requirements.txt mais cela demande beaucoup de réinstallation de grandes bibliothèques, par exemple numpy que j'utilise beaucoup.

Je vois que c'est un avantage lors de la mise à niveau à partir par exemple 2.6 -> 2.7, mais qu'en 2.7.x -> 2.7.y?

Merci

92voto

marianobianchi Points 1863

Avez-vous vu cela? Si je n'ai pas de mal comprendre cette réponse, yo peut essayer de créer un nouveau virtualenv sur le dessus de l'ancien. Vous avez juste besoin de savoir ce qui python va utiliser votre virtualenv (vous devez voir votre virtualenv version).

Si votre virtualenv est installé avec la même version de python de l'ancienne et de la mise à niveau de votre virtualenv package n'est pas une option, vous pouvez lire cela dans le but d'installer un virtualenv avec la version de python que vous voulez.

MODIFIER

J'ai testé cette approche (celle qui a créer un nouveau virtualenv sur le dessus de l'ancien) et il a bien fonctionné pour moi. Je pense que vous pourriez avoir des problèmes si vous changez de python 2.6 à 2.7 et 2.7 à 3.x, mais si vous venez de mise à niveau à l'intérieur de la même version (rester à 2,7 comme vous voulez), vous ne devriez avoir aucun problème, comme tous les colis sont détenus dans les mêmes dossiers pour les deux versions de python (2.7.x et 2.7.y packages sont à l'intérieur de your_env/lib/python2.7/).

Si vous modifiez votre virtualenv version de python, vous aurez besoin d'installer tous vos paquets de nouveau pour cette version (ou juste un lien entre les paquets dont vous avez besoin dans la nouvelle version dossier packages, j'.e: your_env/lib/python_newversion/site-packages)

26voto

Rockallite Points 178

Avis: je n'ai aucune idée de pourquoi mon post a été downvoted. S'il vous plaît, n'hésitez pas à laisser un commentaire pour moi.


Si vous utilisez Homebrew Python sur OS X, le premier deactivate tous virtualenv, puis mise à jour de Python:

brew upgrade python

Puis re-créer le virtualenv de l'environnement:

virtualenv /PATH/TO/EXISTING/ENVIRONMENT

Cela fonctionne pour moi sur un virtualenv avec Django installé.

Référence: http://www.guyrutenberg.com/2012/05/30/fixing-virtualenv-after-upgrading-your-distributionpython/

7voto

Russ Egan Points 670

Je n'étais pas en mesure de créer un nouveau virtualenv sur le dessus de l'ancien. Mais il y a des outils dans le pip, il est beaucoup plus rapide de ré-installer les exigences en une marque de nouveau venv. Pip permet de construire chacun des éléments dans votre requirements.txt dans un groupe roues, et la stocker dans un cache local. Lorsque vous créez un nouveau venv et exécuter installer pip, pip utilisera automatiquement les roues prêtes à l'emploi s'il les trouve. Roues installer beaucoup plus rapide que la course setup.py pour chaque module.

Mon ~/.pip/pip.conf ressemble à ceci:

[global]
download-cache = /Users/me/.pip/download-cache
find-links =
/Users/me/.pip/wheels/

[wheel]
wheel-dir = /Users/me/.pip/wheels

J'ai installer la roue (pip install wheel), puis exécutez pip wheel -r requirements.txt. Il stocke les roues dans les roues-dir dans mon pip.conf.

À partir de là, tout le temps, je pip installer l'une de ces exigences, il les installe au niveau des roues, ce qui est assez rapide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X