1422 votes

Utiliser une version différente de Python avec virtualenv

J'ai un système Debian fonctionnant actuellement avec python 2.5.4. J'ai installé virtualenv correctement, tout fonctionne bien. Existe-t-il une possibilité d'utiliser un virtualenv avec une version différente de Python ?

J'ai compilé Python 2.6.2 et je voudrais l'utiliser avec un certain virtualenv. Est-il suffisant d'écraser le fichier binaire ? Ou dois-je modifier quelque chose au niveau des bibliothèques ?

9 votes

Je mentionne juste que vous pouvez aussi le faire en utilisant virtualenvwrapper.

19 votes

Il est intéressant de noter que dans python 3, il existe un équivalent intégré de virtualenv : venv .

4 votes

N'est-il pas possible de changer de version de python dans l'environnement actuel sans créer un nouvel environnement ?

1818voto

Daniel Roseman Points 199743

Il suffit d'utiliser le --python (ou courte -p ) lors de la création de votre instance de virtualenv pour spécifier l'exécutable Python que vous voulez utiliser, par exemple :

virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>

N.B. Pour Python 3.3 ou plus tard, se référer à l'Aelfinn's réponse ci-dessous.

169 votes

Je me suis dit que je devais mentionner que cela fonctionne également pour les enveloppes virtuelles : mkvirtualenv -p python2.6 env.

84 votes

Il y a quelque chose qui m'échappe : cela ne nécessite-t-il pas que la version 2.6 soit déjà installée sur le système ? Je pensais que la point de virtualenv était que je pouvais avoir une version de python autre que la version principale (dans mon cas, 2.4 sur CentOS). Je supposais que je pouvais installer virtualenv, puis installer Python 2.6 sous celui-ci pour que les paquets dans l'env puissent l'utiliser ?

47 votes

@John oui, vous l'êtes. Ce n'est pas le but de virtualenv : le but est de créer un environnement sandbox pour Python. Vous devrez d'abord installer cette version - vous pouvez cependant l'installer localement pour votre utilisateur.

206voto

zzart Points 2162

Voici les étapes que vous pouvez suivre lorsque vous êtes dans un environnement d'hébergement partagé et que vous avez besoin d'installer et de compiler Python à partir de la source et de créer ensuite venv de votre version de Python. Pour Python 2.7.9., vous devriez faire quelque chose de ce genre :

mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install

environnement virtuel

cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate   

Naturellement, cela peut s'appliquer à toute situation où vous voulez reproduire l'environnement exact sur lequel vous travaillez et déployez.

4 votes

Pourriez-vous nous expliquer pourquoi il faut procéder de cette façon ? Pourquoi installer python localement ? Et plus important encore pourquoi installer virtualenv en utilisant la version de python que vous voulez utiliser avec lui ?

20 votes

Bien sûr. Si vous êtes dans un environnement d'hébergement virtuel et que le serveur fournit d'anciennes versions de python qui ne vous conviennent pas, c'est le cas pour moi. De même, s'il vous arrive de développer des projets sur différents serveurs et que vous souhaitez reproduire ces environnements sur votre machine locale..... Virtualenv crée des liens durs vers les librairies python. Il est donc très important de connaître la version de python que vous utilisez pour installer et créer Virtualenv.

8 votes

Ou si vous êtes comme moi et que vous êtes sur une machine verrouillée au travail sans privilèges sudo. Des copies locales de bibliothèques, de bases de données SQL, de langages et de compilateurs à profusion ! Merci !

112voto

iElectric Points 2625
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>

2 votes

Voir ma réponse ci-dessous pour une solution équivalente utilisant des variables d'environnement. Cette approche signifie que vous n'avez pas besoin de vous rappeler d'utiliser -p .

5 votes

N'existe-t-il pas de solution permettant de passer d'une version de python à une autre sans avoir à créer un nouvel environnement virtuel ?

3 votes

Cela fonctionnerait-il, si vous voulez installer une version de python qui n'est pas installée sur votre système ? Disons que vous voulez tester python3.6 mais ne veulent pas toucher python3.5 installé sur votre ordinateur ?

78voto

balazs Points 2041

Sous Windows, cela fonctionne pour moi :

virtualenv --python=c:\Python25\python.exe envname

sans le python.exe J'ai WindowsError: [Error 5] Access is denied J'ai installé Python2.7.1 avec virtualenv 1.6.1, et je voulais python 2.5.2.

26voto

mario23 Points 322

Supposons que vous avez actuellement python 2.7 installé dans votre virtualenv. Mais vous voulez utiliser python3.2 Vous devriez mettre à jour cette information avec :

$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv

Ensuite, activez votre virtualenv par :

$ source activate name_of_your_virtualenv

et ensuite faire : python --version dans le shell pour vérifier si votre version est maintenant mise à jour.

0 votes

Voir ma réponse ci-dessous pour une solution équivalente utilisant des variables d'environnement. Cette approche signifie que vous n'avez pas besoin de vous rappeler d'utiliser -p .

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