J'ai un système Debian en cours d'exécution avec python 2.5.4. J'ai correctement installé virtualenv, tout fonctionne bien. Est-il possible que je puisse utiliser virtualenv avec une version différente de Python?
J'ai compilé Python 2.6.2 et je voudrais l'utiliser avec virtualenv. Est-ce suffisant pour écraser le fichier binaire? Ou dois-je changer quelque chose en ce qui concerne les bibliothèques?
Utilisez simplement l’option --python
(ou l’option -p
courte) 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 une version ultérieure, reportez-vous à la section Aelfinn's réponse ci-dessous.
UPDATE: Pour Python3.6, le script ci-dessous pyvenv
est obsolète. Au lieu de cela, le Python Docs suggère créant l'environnement virtuel avec la commande suivante:
python3 -m venv <myenvname>
Pour python3 (3.3+), utilisez la méthode ci-dessus ou la commande scriptpyvenv
.
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
package .
Voici les étapes à suivre lorsque vous êtes sur un environnement d'hébergement partagé et que vous devez installer et vous conformer à Python à partir du code source, puis créer venv à partir de votre version Python. Pour Python 2.7.9, vous feriez quelque chose dans ce sens:
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, cela peut s'appliquer à toute situation dans laquelle vous souhaitez répliquer l'environnement exact sur lequel vous travaillez et sur lequel vous déployez.
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
Il y a un moyen plus facile,
virtualenv venv --python=python2.7
Grâce à 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 condenser à:
virtualenv venv -p `which python`
virtualenv venv -p `which python3`
Sous Windows pour moi cela fonctionne:
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.
Mac OSX 10.6.8 (Snow Leopard):
1) Lorsque vous exécutez 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-à-dire. 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 toute 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
créera un dossier dans le répertoire actuel qui contiendra les fichiers exécutables Python, ainsi qu'une copie de la commande pip [commande] que vous pourrez utiliser pour installer d'autres packages.
http://docs.python-guide.org/en/latest/dev/virtualenvs/
virtualenv
copie simplement python d'un emplacement de votre ordinateur dans le répertoire my_env/bin/nouvellement créé.
2) Le système python est dans /usr/bin
, tandis que les différentes versions de python que j'ai installées ont été installées par défaut dans:
/usr/local/bin
3) Les différents pythons que j'ai installés portent des noms tels que python2.7
ou python3.2
, et je peux utiliser ces noms plutôt que des chemins complets.
1) J'ai eu quelques problèmes à 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) -p option
fonctionne différemment avec virtualenvwrapper: je dois spécifier le chemin complet de l'interpréteur python à utiliser dans le nouvel environnement (lorsque je ne souhaite pas utiliser le paramètre par défaut python version):
$ 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.
À la différence de virtualenv, virtualenvwrapper créera l'environnement à l'emplacement spécifié par la variable d'environnement $ WORKON_HOME. Cela garde tous vos environnements au même endroit.
Supposons que vous avez actuellement python 2.7 installé dans votre virtualenv. Mais vous voulez utiliser python3.2
, vous devrez le mettre à jour avec:
$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv
Puis activez votre virtualenv en:
$ source activate name_of_your_virtualenv
puis faites: python --version
dans Shell pour vérifier si votre version est maintenant mise à jour.
Ces deux commandes devraient bien fonctionner pour un débutant
virtualenv -p python2 myenv
(pour python2)
virtualenv -p python3 myenv
(pour python3)
Vous pouvez appeler virtualenv
avec python version que vous voulez. Par exemple:
python3 -m virtualenv venv
Ou alternativement, pointez directement sur votre chemin virtuel. 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 un environnement virtuel
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, c'est généralement pénible et peut également entraîner des erreurs.
Votre autre option consiste à définir une variable d’environnement faisant la même chose que -p
. Définissez ceci via votre fichier ~/.bashrc
ou n'importe où vous gérez des variables d'environnement pour vos sessions de connexion:
export VIRTUALENV_PYTHON=/path/to/desired/version
Ensuite, virtualenv
l'utilisera chaque fois que vous ne spécifiez pas -p
sur la ligne de commande.
Pour Mac (High Sierra), installez virtualenv sur python3 et créez un virtualenv pour python2:
$ python3 -m pip install virtualenv
$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14
Encore plus facilement, en utilisant la substitution de commande pour trouver python2 pour vous:
virtualenv -p $(which python2) <path/to/new/virtualenv/>
Ou lorsque vous utilisez virtualenvwrapper:
mkvirtualenv -p $(which python2) <env_name>
Sur le Mac, j'utilise pyenv et virtualenvwrapper. Je devais créer un nouveau virtualenv. Vous avez besoin d'un 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 d'abord gelé mes exigences afin de pouvoir simplement réinstaller dans le nouveau virtualenv avec:
pip install -r requirements.txt
Créer un environnement pour python3:
virtualenv --python=/usr/bin/python3 env
Activez le:
source env/bin/activate
Oui, les réponses ci-dessus sont correctes et fonctionnent parfaitement sur les systèmes Unix tels que Linux & MAC OS X.
J'ai essayé de créer virtualenv pour Python2 & Python avec les commandes suivantes.
Ici, j'ai utilisé venv2 & venv comme noms respectifs pour Python2 & Python.
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 de Python emplacements d'installation
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$
Sur les fenêtres:
py -3.4x32 -m venv venv34
ou
py -2.6.2 -m venv venv26
Ceci utilise le py
launcher qui trouvera le bon exécutable python pour vous (en supposant qu'il soit installé).
Cela a fonctionné pour moi
Sudo apt-get install python3-minimal
virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
virtualenv -p python3 myenv
Pour les systèmes Debian (debian 9) en 2019, j'ai découvert une solution simple qui pourrait résoudre le problème à partir de l'environnement virtuel.
Supposons que l'environnement virtuel ait été créé via:
python3.7 -m venv myenv
mais ne possède que les versions de python2
et python2.7
, et vous avez besoin des fonctionnalités récentes de python3.7.
Ensuite, exécutez simplement la commande:
(myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/
ajoutera les paquets python3.7 s’ils sont déjà disponibles sur votre système.
C'était un bug avec virtualenv. La mise à niveau de votre pip devrait être la solution.
pip install --upgrade virtualenv
Oui, il vous suffit d'installer l'autre version de python et de définir l'emplacement de votre autre version de python dans votre commande, comme suit:
virtualenv/home/paie/Documents/env -p/usr/bin/python3
J'utilise pyenv pour gérer ma version python.
pyenv install 3.7.3
pyenv local 3.7.3
Vérifiez votre version python:
$ python --version
Python 3.7.3
Créez l'environnement virtuel avec venv :
python -m venv .
Activez ensuite l'environnement virtuel:
source bin/activate
Vérifiez votre version python:
$ python --version
Python 3.7.3
Vous devrez peut-être supprimer l'environnement virtuel précédent
rm -rf bin
Cela a fonctionné pour moi sous Windows avec l’installation de python 2:
C’est ainsi que j’ai créé l’environnement virtuel Python 3 sur mon installation existante python 2.
Vous pouvez le faire en faisant ceci:
virtualenv -p python3 .