Utiliser une version différente de Python avec virtualenv

j'ai un système Debian qui tourne actuellement avec python 2.5.4. J'ai installé virtualenv correctement, tout fonctionne bien. Y a-t-il une possibilité que je puisse 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-ce suffisant pour écraser le fichier binaire? Ou dois-je changer quelque chose en ce qui concerne les bibliothèques?

804
demandé sur bias 2009-10-08 01:11:22

19 réponses

utilisez simplement l'option --python (ou courte -p ) lors de la création de votre instance 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, référez-vous à la réponse de L'Aelfinn ci-dessous. [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 a été enterrée sous trois ou quatre réponses de perroquet. Je suis juste essayer de sauver tout le monde de temps ici.]

1207
répondu Daniel Roseman 2017-09-16 21:12:11

ce sont des étapes lorsque vous êtes sur un environnement d'hébergement partagé et que vous avez besoin d'installer et de complier Python à partir de la source, puis de créer venv à partir de votre version Python. Pour Python 2.7.9 vous feriez quelque chose du 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

"151950920 virtuelle" env

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 être applicable à n'importe quelle situation où vous voulez répliquer l'environnement exact que vous travaillez et déployez sur.

167
répondu zzart 2016-07-01 10:25:05

mise à jour: pour Python3.6, le script ci-dessous pyvenv est déprécié. Plutôt, les docs 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 commande script pyvenv .

pyvenv /path/to/new/virtual/environment

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

145
répondu The Aelfinn 2018-04-02 21:56:45
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
93
répondu iElectric 2014-10-08 23:53:53

sous Windows pour moi cette œuvre:

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
répondu balazs 2011-07-31 21:04:32

il y a un moyen plus facile,

virtualenv venv --python=python2.7

merci à un commentaire, cela ne fonctionne que si vous avez python2.7 installé 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 vers votre installation de python avec

which python

cela fonctionnera aussi avec python 3.

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

finally condensing to:

virtualenv venv -p `which python`
virtualenv venv -p `which python3`
59
répondu Daniel Lee 2017-05-24 07:28:36

Mac OSX 10.6.8 (Snow Leopard):

1) Lorsque 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. Vous pouvez faire

 $ which pip   

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

 $ which pip
 /usr/local/bin/pip

alors:

$ 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 à 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 courant qui contiendra les fichiers exécutables Python et une copie du pip [commande] que vous pouvez utiliser pour installer d'autres paquet.

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

virtualenv copie python depuis un emplacement sur votre ordinateur dans le nouveau répertoire my_env/bin/.

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

 /usr/local/bin

3) les différents pythons J'ai installé 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 dans ~/.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. Qui maintient tous vos environnements au même endroit.

27
répondu 7stud 2018-03-16 02:49:52

supposons que vous avez actuellement python 2.7 installé dans votre virtualenv. Mais si vous voulez utiliser python3.2 , vous devez mettre à jour cela avec:

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

puis activez votre virtualenv par:

$ source activate name_of_your_virtualenv

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

17
répondu kmario23 2018-09-08 18:29:34

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

python3 -m virtualenv venv

ou pointez directement votre chemin virtualenv. par exemple pour windows:

c:\Python34\Scripts\virtualenv.exe venv

et en tournant:

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
répondu Nima Soroush 2016-09-19 13:03:03

l'approche -p fonctionne bien, mais vous devez vous rappeler de l'utiliser à chaque fois. Si votre objectif est de passer à une version plus récente de Python en général, c'est une douleur et peut également conduire à des erreurs.

Votre autre option est de définir une variable d'environnement qui fait la même chose que -p . Définissez ceci via votre fichier ~/.bashrc ou à l'endroit où vous gérez les variables d'environnement pour vos sessions de connexion:

export VIRTUALENV_PYTHON=/path/to/desired/version

alors virtualenv va utiliser que chaque fois que vous ne spécifiez pas -p sur la ligne de commande.

7
répondu Chris Johnson 2016-08-05 20:57:44

sur le mac j'utilise pyenv et virtualenvwrapper. J'ai dû créer un nouveau virtualenv. Vous avez besoin de homebrew que je suppose que vous avez installé si vous êtes sur un mac, mais juste pour le plaisir:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10
export PATH=/Users/{USERNAME}/.pyenv/versions/2.7.10/bin:$PATH
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python  {virtual_env_name}

j'ai également gelé mes exigences en premier donc je pourrais simplement réinstaller dans le nouveau virtualenv avec:

pip install -r requirements.txt
6
répondu silverdagger 2015-09-04 21:03:08

encore plus facile, en utilisant la substitution de commande pour trouver python2 pour vous:

virtualenv -p $(which python2) <path/to/new/virtualenv/>

ou en utilisant virtualenvwrapper:

mkvirtualenv -p $(which python2) <env_name>

6
répondu Gerard 2016-09-19 13:28:50

dans le sous-système windows Pour linux:

  1. Créer un environnement pour python3:

    virtualenv --python=/usr/bin/python3 env
    
  2. activez-le:

    source env/bin/activate
    
4
répondu Marcin Rapacz 2017-05-26 11:45:41

ces deux commandes devraient fonctionner très bien pour un débutant

virtualenv -p python2 myenv (pour python2)

virtualenv -p python3 myenv (pour python3)

4
répondu Sachin Kolige 2018-07-05 10:03:25

pour Mac (High Sierra), installez le virtualenv en python3 et créez un virtualenv pour python2:

$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14
3
répondu Howe 2018-04-24 00:30:05

Il a travaillé pour moi

sudo apt-get install python3-minimal

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
2
répondu Dadaso Zanzane 2016-06-03 06:53:41

Oui , les réponses ci-dessus sont correctes et fonctionne très bien sur des systèmes Unix comme Linux & MAC OS X .

j'ai essayé de créer virtualenv pour Python2 & Python3 avec les commandes suivantes.

ici j'ai utilisé venv2 & venv3 comme leurs noms pour Python2 et Python3 respectivement.

Python2 "

MacBook-Pro-2:~ admin$ virtualenv venv2 --python=`which python2`
Running virtualenv with interpreter /usr/local/bin/python2
New python executable in /Users/admin/venv2/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv2/bin/
activate        easy_install        pip2.7          python2.7
activate.csh        easy_install-2.7    python          wheel
activate.fish       pip         python-config
activate_this.py    pip2            python2
MacBook-Pro-2:~ admin$ 

Python3 "

MacBook-Pro-2:~ admin$ virtualenv venv3 --python=`which python3`
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/admin/venv3/bin/python3
Also creating executable in /Users/admin/venv3/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv3/bin/
activate        easy_install        pip3.6          python3.6
activate.csh        easy_install-3.6    python          wheel
activate.fish       pip         python-config
activate_this.py    pip3            python3
MacBook-Pro-2:~ admin$ 

vérification des emplacements d'installation de Python

MacBook-Pro-2:~ admin$ which python2
/usr/local/bin/python2
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ which python3
/usr/local/bin/python3
MacBook-Pro-2:~ admin$ 
2
répondu hygull 2018-06-30 07:42:05

sous windows:

py -3.4x32 -m venv venv34

ou

py -2.6.2 -m venv venv26

utilise le py lanceur qui trouvera l'exécutable python qui vous convient (en supposant que vous l'ayez installé).

1
répondu jnnnnn 2018-04-17 23:22:22
virtualenv -p python3 myenv

lien vers Créer virtualenv

1
répondu Aseem 2018-07-03 08:51:50