Question Utilisez une version différente de Python avec virtualenv


J'ai un système Debian en cours d'exécution avec python 2.5.4. J'ai virtualenv correctement installé, tout fonctionne bien. Est-il possible que je peux utiliser un virtualenv avec une version différente de Python?

J'ai compilé Python 2.6.2 et je voudrais l'utiliser avec un peu de virtualenv. Est-il suffisant d'écraser le fichier binaire? Ou dois-je changer quelque chose par rapport aux bibliothèques?


777
2017-10-07 21:11


origine


Réponses:


Utilisez simplement le --python (ou court -p) lors de la création de votre instance virtualenv pour spécifier l'exécutable Python que vous souhaitez 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 à The Aelfinn's répondre au dessous de. [NDLR: je sais que cela devrait normalement être un commentaire, pas un montage, mais un nouveau commentaire serait caché, et je viens de passer 45 minutes à démêler les erreurs parce que cette réponse importante était enterrée sous trois ou quatre réponses de perroquet. J'essaie juste de sauver tout le monde ici.]


1170
2017-10-07 21:33



Ce sont des étapes lorsque vous êtes sur un environnement d'hébergement partagé et que vous devez installer Python à partir de la source, puis créer venv à partir de votre version Python. Pour Python 2.7.9, vous feriez quelque chose comme ceci:

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

env 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, ceci peut s'appliquer à n'importe quelle situation où vous voulez répliquer l'environnement exact sur lequel vous travaillez et déployez.


164
2017-07-02 22:17



METTRE À JOUR:  Pour Python3.6, ci-dessous pyvenv le script est obsolète. Au lieu,   les documents Python suggèrent créer l'environnement virtuel avec la commande suivante:

python3 -m venv <myenvname>

Pour python3 (3.3+), utilisez la méthode ci-dessus ou la scénario  pyvenv commander.

pyvenv /path/to/new/virtual/environment

Veuillez noter que venv ne permet pas de créer virtualenv avec d'autres versions de Python. Pour cela, installez et utilisez le virtualenv  paquet.


132
2017-09-26 22:46



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

90
2017-11-04 15:15



Sous Windows pour moi cela fonctionne:

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

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


63
2017-07-31 21:04



Il y a un moyen plus facile,

virtualenv venv --python=python2.7

Merci à un commentaire, cela ne fonctionne que si vous avez installé python2.7 au niveau du système (par exemple /usr/bin/python2.7).

Sinon, si vous utilisez homebrew, vous pouvez utiliser le chemin pour vous donner ce que vous voulez.

virtualenv venv --python=/usr/local/bin/python

Vous pouvez trouver le chemin de votre installation python avec

which python

Cela fonctionnera également avec python 3.

which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3

En fin de compte, se condenser pour:

virtualenv venv -p `which python`
virtualenv venv -p `which python3`

56
2017-11-01 11:59



Mac OSX 10.6.8 (Snow Leopard):

1) Quand vous faites pip install virtualenv, la commande pip est associée à l'une de vos versions python, et virtualenv est installé dans cette version de python. Tu peux faire

 $ which pip   

pour voir quelle version de python c'est. Si vous voyez quelque chose comme:

 $ which pip
 /usr/local/bin/pip

alors fais:

$ ls -al /usr/local/bin/pip
lrwxrwxr-x  1 root  admin  65 Apr 10  2015 /usr/local/bin/pip ->
../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip

Vous pouvez voir la version python dans la sortie.

Par défaut, ce sera la version de python utilisée pour tout nouvel environnement que vous créez. Cependant, vous pouvez spécifier n'importe quelle version de python installée sur votre ordinateur pour l'utiliser dans un nouvel environnement avec le -p flag:

$ virtualenv -p python3.2 my_env  
Running virtualenv with interpreter /usr/local/bin/python3.2  
New python executable in my_env/bin/python  
Installing setuptools, pip...done.  

virtualenv my_env va créer un dossier dans le répertoire en cours   contiendra les fichiers exécutables Python, et une copie du pip   [commande] que vous pouvez utiliser pour installer d'autres paquets.

http://docs.python-guide.org/fr/latest/dev/virtualenvs/

virtualenv Copie juste python d'un emplacement sur votre ordinateur dans le répertoire my_env / bin / nouvellement créé.

2) Le système python est en /usr/bin, alors que les différentes versions de python que j'ai installées étaient, par défaut, installées dans:

 /usr/local/bin

3) Les différents pythons que j'ai installés ont des noms comme python2.7 ou python3.2, et je peux utiliser ces noms plutôt que des chemins complets.

======== VIRTUALENVWRAPPER =========

1) J'ai eu quelques problèmes pour faire fonctionner virtualenvwrapper. C'est ce que j'ai fini par mettre ~/.bash_profile:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/django_projects  #Not very important -- mkproject command uses this
#Added the following based on: 
#http://stackoverflow.com/questions/19665327/virtualenvwrapper-installation-snow-leopard-python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 
#source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh

2) Le -p option fonctionne différemment avec virtualenvwrapper: je dois spécifier le chemin complet de l'interpréteur python à utiliser dans le nouvel environnement (quand je ne veux pas utiliser la version python par défaut):

$ mkvirtualenv -p /usr/local/bin/python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3
New python executable in my_env/bin/python
Installing setuptools, pip...done.
Usage: source deactivate

removes the 'bin' directory of the environment activated with 'source
activate' from PATH. 

Contrairement à virtualenv, virtualenvwrapper créera l'environnement à l'emplacement spécifié par la variable d'environnement $ WORKON_HOME. Cela permet de garder tous vos environnements en un seul endroit.


26
2018-01-15 20:43



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

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

Ensuite, activez votre virtualenv et tapez python --version dans shell pour vérifier si votre version est maintenant mise à jour.


15
2017-12-30 05:51



Tu peux appeler virtualenv avec la version python que vous voulez. Par exemple:

python3 -m virtualenv venv

Ou bien pointez directement sur votre chemin virtualenv. par exemple. Pour les fenêtres:

c:\Python34\Scripts\virtualenv.exe venv

Et en courant:

venv/bin/python

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

vous pouvez voir la version python installée dans l'environnement virtuel


10
2017-12-12 23:11