Utilizzare la versione di Python diverso con virtualenv
-
20-09-2019 - |
Domanda
Ho un sistema Debian in esecuzione con Python 2.5.4. Mi sono virtualenv installato correttamente, tutto sta funzionando benissimo. C'è una possibilità che posso utilizzare un virtualenv con una diversa versione di Python?
I compilato Python 2.6.2 e vorrei usarlo con qualche virtualenv. E 'abbastanza per sovrascrivere il file binario? O devo cambiare qualcosa rispetto alle librerie?
Soluzione
Basta usare l'opzione --python
(o corto -p
) quando si crea l'istanza virtualenv per specificare il Python eseguibile che si desidera utilizzare, per esempio:.
virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>
NB. Per Python 3.3 o poi, fare riferimento a rispondere di seguito.
Altri suggerimenti
UPDATE: Per Python3.6, lo script pyvenv
seguito è deprecato. Anziché,
virtuale Docs Python suggeriscono creare l'ambiente virtuale con il seguente comando:
python3 -m venv <myenvname>
Per python3 (3.3+), utilizzare il metodo di cui sopra o il comando di script pyvenv
pyvenv /path/to/new/virtual/environment
Si noti che venv
non consente la creazione di virtualenv con altre versioni di Python. Per questo, installare e utilizzare il virtualenv
.
Si tratta di passi quando si è in ambiente di hosting condiviso e necessario installare & complie Python da sorgente e quindi creare venv dalla versione di Python. Per Python 2.7.9 si dovrebbe fare qualcosa in queste righe:
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 virtuale
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
Naturalmente questo può essere applicabile a qualsiasi situazione in cui si desidera replicare l'ambiente esatto si lavora e distribuire su.
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
C'è un modo più semplice,
virtualenv venv --python=python2.7
Grazie a un commento, questo funziona solo se si dispone python2.7 installato a livello di sistema (ad esempio /usr/bin/python2.7).
In caso contrario, se si sta utilizzando homebrew è possibile utilizzare il percorso per darti quello che vuoi.
virtualenv venv --python=/usr/local/bin/python
È possibile trovare il percorso dell'installazione di pitone con
which python
Questo funziona anche con Python 3.
which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3
In definitiva condensa a:
virtualenv venv -p `which python`
virtualenv venv -p `which python3`
In Windows per me questo funziona:
virtualenv --python=c:\Python25\python.exe envname
senza il python.exe
ho ottenuto WindowsError: [Error 5] Access is denied
Ho installato con Python2.7.1 virtualenv 1.6.1, e volevo python 2.5.2.
Mac OSX 10.6.8 (Snow Leopard):
1) Quando si esegue pip install virtualenv
, il comando pip è associato ad una delle tue versioni di Python, e virtualenv
viene installato in quella versione di Python. Si può fare
$ which pip
per vedere quale versione di Python che è. Se vedete qualcosa di simile:
$ which pip
/usr/local/bin/pip
poi fare:
$ 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
È possibile visualizzare la versione di Python in uscita.
Per impostazione predefinita, che sarà la versione di Python che viene utilizzato per qualsiasi nuovo ambiente che si crea. Tuttavia, è possibile specificare qualsiasi versione di Python installata sul computer per l'utilizzo all'interno di un nuovo ambiente con la -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
creerà una cartella nella directory corrente che conterrà i file eseguibili Python, e una copia del pip [Comando], che è possibile utilizzare per installare altri pacchetti.
http://docs.python-guide.org/en/ ultima / dev / virtualenvs /
virtualenv
solo copie di pitone da una posizione sul computer in / bin / my_env appena creata.
2) Il pitone sistema è in /usr/bin
, mentre le varie versioni di Python che ho installato sono stati, per impostazione predefinita, installato in:
/usr/local/bin
3) Le varie pitoni ho installato hanno nomi come python2.7
o python3.2
, e posso usare quei nomi, piuttosto che percorsi completi.
======== VIRTUALENVWRAPPER =========
1) ho avuto qualche difficoltà a trovare virtualenvwrapper a lavorare. Questo è quello che ho finito per mettere in ~/.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) Il -p option
funziona in modo diverso con virtualenvwrapper: devo specificare il percorso completo per l'interprete python da utilizzare nel nuovo ambiente (quando non voglio usare la versione di default python):
$ 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.
A differenza virtualenv, virtualenvwrapper creerà l'ambiente nella posizione specificata dalla variabile di ambiente $ WORKON_HOME. Che mantiene tutti gli ambienti in un unico luogo.
Si supponga che attualmente hanno python 2.7 installato nel vostro virtualenv. Ma vuole fare uso di python3.2
, Si dovrà aggiornare questo con:
$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv
Poi attivare il virtualenv da:
$ source activate name_of_your_virtualenv
e poi fare: python --version
in guscio per verificare se la versione è ora aggiornato
Questi due comandi devono funzionare bene.
virtualenv -p python2 myenv
(Per python2)
virtualenv -p python3 myenv
(Per python3)
È possibile chiamare virtualenv
con la versione di Python che si desidera. Ad esempio:
python3 -m virtualenv venv
In alternativa puntare direttamente al percorso virtualenv. per esempio. per le finestre:
c:\Python34\Scripts\virtualenv.exe venv
E eseguendo:
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.
>>>
è possibile vedere la versione di Python installata in ambiente virtuale
L'approccio -p
funziona bene, ma bisogna ricordarsi di usarlo ogni volta. Se il vostro obiettivo è quello di passare ad una nuova versione di Python in generale, questo è un dolore e può anche portare a errori.
L'altra opzione è quella di impostare una variabile d'ambiente che fa la stessa cosa come -p
. Impostare questo tramite il file ~/.bashrc
o dovunque si riesce variabili di ambiente per le sessioni di accesso:
export VIRTUALENV_PYTHON=/path/to/desired/version
Quindi virtualenv
userà che ogni volta che non si specifica -p
sulla riga di comando.
Per Mac (High Sierra), installare il virtualenv su python3 e creare un virtualenv per python2:
$ python3 -m pip install virtualenv
$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14
Ancora più facile, usando sostituzione di comando per trovare python2 per voi:
virtualenv -p $(which python2) <path/to/new/virtualenv/>
o quando si utilizza virtualenvwrapper:
mkvirtualenv -p $(which python2) <env_name>
Su Mac uso pyenv e virtualenvwrapper. Ho dovuto creare un nuovo virtualenv. È necessario homebrew che darò per scontato che hai installato, se siete su un Mac, ma solo per divertimento:
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}
Ho anche congelato le mie esigenze prima così ho potuto semplicemente reinstallare nella nuova virtualenv con:
pip install -r requirements.txt
In sottosistema di Windows per Linux:
-
Crea ambiente per python3:
virtualenv --python=/usr/bin/python3 env
-
Attiva esso:
source env/bin/activate
Sì , le risposte di cui sopra sono corrette e funziona bene su sistemi Unix basati su come Linux e MAC OS X .
Ho cercato di creare virtualenv python2 e python3 con i seguenti comandi.
Qui ho usato venv2 e venv3 come i loro nomi per python2 e python3 , rispettivamente.
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$
Controllo luoghi di installazione 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$
Ha funzionato per me
sudo apt-get install python3-minimal
virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
Su Windows:
py -3.4x32 -m venv venv34
o
py -2.6.2 -m venv venv26
Questo utilizza il py
lanciatore che troverà il pitone destra eseguibile per voi (ammesso che abbiate installato).
virtualenv -p python3 myenv
Per Debian (Debian 9) Sistemi nel 2019, ho scoperto una soluzione semplice che può risolvere il problema all'interno dell'ambiente virtuale.
Si supponga che l'ambiente virtuale sono stati creati tramite:
python3.7 -m venv myenv
ma ha solo le versioni di python2
e python2.7
, ed è necessario le caratteristiche recenti di python3.7.
Quindi, è sufficiente eseguire il comando:
(myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/
aggiungerà pacchetti python3.7 se sono già disponibili sul sistema.
Questo è stato un bug con virtualenv. Basta aggiornare il proprio pip dovrebbe essere la correzione.
pip install --upgrade virtualenv
Ha funzionato per me su Windows con Python 2 installazione:
- Passaggio 1: Installare Python 3 versione.
- Passaggio 2: Creare una cartella per env l'ambiente virtuale.
- Step 3: c: \ Python37 \ python -m venv c:. \ path \ to \ env
Questo è il modo ho creato Python 3 ambiente virtuale sulla mia installazione di Python 2 esistente.
pyenv per gestire la mia versione di Python.
pyenv install 3.7.3
pyenv local 3.7.3
Controlla la tua versione di Python:
$ python --version
Python 3.7.3
Creare l'ambiente virtuale con venv :
python -m venv .
Poi attivare l'ambiente virtuale:
source bin/activate
Controlla la tua versione di Python:
$ python --version
Python 3.7.3
potrebbe essere necessario rimuovere l'ambiente virtuale precedente
rm -rf bin
Si può fare in questo modo:
virtualenv -p python3 .
Sì, è sufficiente installare l'altra versione di pitone, e definire la posizione della vostra altra versione di Python nel vostro comando come:
virtualenv / home / payroll / Documents / ENV -p / usr / bin / python3
Ecco il passo per passo come creare l'ambiente virtuale nella cartella Studio Codice a vista:
Ho usato Powershell (modalità amministratore):
1. creare una cartella VSCode -. "D: \ Code_Python_VE" dove voglio creare un ambiente virtuale
2. Poi ho digitare il comando - "PIP3 installare virtualenv". (D: \ Code_Python_VE> PIP3 installare 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 - Questo elenco di una nuova directory "project_env"
.
6. D: \ Code_Python_VE> codice. Verrà avviata codice Visual Studio. Assicurarsi che il comando è (codice.).
7. Creare launch.jason con seguente contenuto:
{
// 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"
},
]
}
(Si prega di ricerca come andare a finestra Debug e Aggiungi nuova configurazione nel Codice VS).
- Premere F1 nel codice Visual Studio e il comando di pallet si aprirà - Selezionare interprete Python e selezionare l'ambiente project_env virtuale.
- Aggiungi test.py file con una stampa affermazione ( "Ciao Mondo").
- Esegui questo programma.
- In Visual Studio terminale Codice -
(Project_env) d: \ Code_Python_VE> python -m pip installare --upgrade
Spero che questo aiuta.