Utiliser une autre version Python avec virtualenv
-
20-09-2019 - |
Question
J'ai un système Debian en cours d'exécution avec python 2.5.4. Je me suis virtualenv correctement installé, tout fonctionne bien. Est-il possible que je puisse utiliser un virtualenv avec une autre version de Python?
Je compilé Python 2.6.2 et que vous souhaitez l'utiliser avec certains virtualenv. Est-il suffisant pour écraser le fichier binaire? Ou dois-je changer quelque chose en ce qui concerne les bibliothèques?
La solution
Il suffit d'utiliser l'option --python
(ou -p
courte) lors de la création de votre instance virtualenv pour spécifier le que vous voulez utiliser l'exécutable Python, par exemple:.
virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>
N.B.. Python 3.3 ou plus tard, reportez-vous à la répondre ci-dessous.
Autres conseils
Mise à jour: Pour Python3.6, le script ci-dessous de pyvenv
est dépréciée. Au lieu,
virtuelle Python Docs suggèrent la création d'un environnement virtuel avec la commande suivante:
python3 -m venv <myenvname>
python3 (3.3+), utiliser la méthode ci-dessus ou le script de commande pyvenv
pyvenv /path/to/new/virtual/environment
S'il vous plaît noter que venv
ne permet pas de créer virtualenv avec d'autres versions de Python. Pour cela, installer et utiliser le virtualenv
.
Ce sont des étapes lorsque vous êtes sur l'environnement d'hébergement mutualisé et besoin d'installer et complie Python de source, puis créer venv à partir de votre version de Python. Pour Python vous 2.7.9 feriez quelque chose le long de ces lignes:
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
Bien sûr, cela peut être applicable à toute situation dans laquelle vous voulez reproduire l'environnement exact que vous travaillez et déployer sur.
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
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).
Dans le cas contraire, 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 de python avec
which python
Cela permettra également de travailler avec python 3.
which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3
En fin de compte à condensation:
virtualenv venv -p `which python`
virtualenv venv -p `which python3`
Sous Windows pour moi cela fonctionne:
virtualenv --python=c:\Python25\python.exe envname
sans python.exe
je suis arrivé WindowsError: [Error 5] Access is denied
J'ai Python2.7.1 installé avec virtualenv 1.6.1, et je voulais python 2.5.2.
Mac OS X 10.6.8 (Snow Leopard):
1) Lorsque vous faites pip install virtualenv
, la commande pip est associée à un de vos versions de python et virtualenv
est installé dans cette version de python. Vous pouvez faire
$ which pip
pour voir quelle version de python qui est. Si vous voyez quelque chose comme:
$ which pip
/usr/local/bin/pip
puis faites:
$ 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 qui est utilisé pour tout nouvel environnement que vous créez. Cependant, vous pouvez spécifier une version de python installé sur votre ordinateur pour 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 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/en/ latest / dev / virtualenvs /
virtualenv
python seulement des copies à partir d'un emplacement sur votre ordinateur dans le my_env nouvellement créé / bin /.
2) Le python système est en /usr/bin
, tandis que les différentes versions de python j'INSTALLÉ sont, par défaut, installé dans:
/usr/local/bin
3) Les différents pythons j'INSTALLÉ 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 virtualenvwrapper travailler. Voilà ce que je fini par mettre en ~/.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 vers l'interpréteur python être utilisé 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 va créer l'environnement à l'emplacement spécifié par la variable d'environnement WORKON_HOME $. Cela permet de conserver tous vos environnements en un seul endroit.
Supposons que vous avez actuellement Python 2.7 installé dans votre virtualenv. Mais voulez utiliser python3.2
, vous devez mettre à jour ce avec:
$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv
Ensuite, activez votre virtualenv par:
$ source activate name_of_your_virtualenv
puis faire: python --version
en coquille pour vérifier si votre version est mise à jour
Ces deux commandes doivent fonctionner correctement.
virtualenv -p python2 myenv
(Pour python2)
virtualenv -p python3 myenv
(Pour python3)
Vous pouvez appeler virtualenv
avec la version python vous voulez. Par exemple:
python3 -m virtualenv venv
Ou bien pointer directement sur votre chemin de virtualenv. par exemple. pour les fenêtres:
c:\Python34\Scripts\virtualenv.exe venv
Et en exécutant:
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 ne devez pas oublier de l'utiliser à chaque fois. Si votre objectif est de passer à une version plus récente de Python en général, qui est une douleur et peut aussi conduire à des erreurs.
Votre autre option est de définir une variable d'environnement qui fait la même chose que -p
. Réglez via votre fichier ~/.bashrc
ou chaque fois que vous gérez les variables d'environnement pour vos sessions de connexion:
export VIRTUALENV_PYTHON=/path/to/desired/version
Alors virtualenv
utilisera que chaque fois que vous ne spécifiez pas -p
sur la ligne de commande.
Pour Mac (High Sierra), installer le virtualenv sur python3 et créer 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 facile, 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 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 aussi gelé mes besoins d'abord pour que je puisse simplement réinstaller dans le nouveau virtualenv avec:
pip install -r requirements.txt
Dans le sous-système Windows pour Linux:
-
Créer un environnement pour python3:
virtualenv --python=/usr/bin/python3 env
-
activer:
source env/bin/activate
Oui , les réponses ci-dessus sont corrects et fonctionne très bien sur les systèmes Unix comme Linux MAC OS X .
J'ai essayé de créer virtualenv python2 python3 avec les commandes suivantes.
Ici, je l'ai utilisé venv2 venv3 comme leurs noms pour python2 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 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$
Il a travaillé pour moi
sudo apt-get install python3-minimal
virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
Sur les fenêtres:
py -3.4x32 -m venv venv34
ou
py -2.6.2 -m venv venv26
utilise le lanceur py
qui trouvera le python droit exécutable pour vous (en supposant que vous l'avez installé).
virtualenv -p python3 myenv
Pour Debian (debian 9) Systèmes en 2019, j'ai découvert une solution simple qui peut résoudre le problème dans l'environnement virtuel.
Supposons que l'environnement virtuel ont été créés via:
python3.7 -m venv myenv
mais seulement a des versions de python2
et python2.7
, et vous avez besoin des fonctionnalités récentes de python3.7.
Ensuite, il suffit d'exécuter la commande:
(myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/
va ajouter des packages de python3.7 si elles sont déjà disponibles sur votre système.
Ce fut un bug avec virtualenv. la mise à niveau juste votre pip devrait être la solution.
pip install --upgrade virtualenv
Il a travaillé pour moi sur Windows avec l'installation python 2:
- Etape 1: Installez la version python 3.
- Étape 2: créer un dossier pour env l'environnement virtuel.
- Étape 3: c: \ Python37 \ python -m venv c:. \ path \ to \ env
Voici comment j'ai créé l'environnement virtuel Python 3 sur mon installation python existant 2.
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éer l'environnement virtuel venv :
python -m venv .
Ensuite, activez 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
Vous pouvez le faire en faisant ceci:
virtualenv -p python3 .
Oui, vous avez juste besoin d'installer l'autre version de python, et définir l'emplacement de votre autre version de python dans votre commande comme:
virtualenv / home / paie / Documents / env -p / usr / bin / python3
Voici le stepbystep comment créer l'environnement virtuel dans le dossier de code Visual Studio:
Je Powershell (mode Administrateur):
1. Je crée un dossier VSCode -. « D: \ Code_Python_VE » où je veux créer un environnement virtuel
2. Ensuite, je tapez la commande - « installer PIP3 virtualenv ». (D: \ Code_Python_VE> PIP3 installer virtualenv)
3. D: \ Code_Python_VE> python3 -m venv project_env
4. D: \ Code_Python_VE> project_env \ Scripts \ activate.bat
5. D: \ Code_Python_VE> ls - Ceci listera un nouveau répertoire "project_env"
.
6. D: Code \ Code_Python_VE>. Cela va démarrer le code Visual Studio. Assurez-vous que la commande est (code.).
7. Créer launch.jason avec le contenu suivant:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "python",
"request": "launch",
"name": "Python: Current File (Integrated Terminal 1)",
"program": "${file}"
},
{
"name": "Python: Current File (Integrated Terminal 2)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
},
]
}
(S'il vous plaît chercher comment aller à la fenêtre de débogage et Ajouter une nouvelle configuration dans le code VS).
- Appuyez sur F1 dans le code Visual Studio et la palette de commande ouvrira ses portes - Sélectionnez Python Interprète et sélectionnez l'environnement virtuel project_env.
- Ajoutez test.py fichier avec une impression de déclaration ( "Bonjour tout le monde").
- Exécuter ce programme.
- Dans Terminal Code Visual Studio -
(Project_env) d: \ Code_Python_VE> python -m pip installer --upgrade
J'espère que cela aide.