Frage Verwenden Sie eine andere Python-Version mit virtualenv


Ich habe ein Debian-System, das gerade mit Python 2.5.4 läuft. Ich habe virtualenv richtig installiert, alles funktioniert gut. Gibt es eine Möglichkeit, dass ich ein virtualenv mit einer anderen Version von Python verwenden kann?

Ich habe Python 2.6.2 kompiliert und möchte es mit einigen virtualenv verwenden. Reicht es aus, die Binärdatei zu überschreiben? Oder muss ich etwas in Bezug auf die Bibliotheken ändern?


777
2017-10-07 21:11


Ursprung


Antworten:


Benutze einfach die --python (oder kurz -p) Option beim Erstellen Ihrer virtualenv-Instanz, um die Python-Programmdatei anzugeben, die Sie verwenden möchten, z. B .:

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

N.B. Zum Python 3.3 oder später, siehe The Aelfinn's Antworten unten. [Anmerkung des Herausgebers: Ich weiß, das sollte normalerweise ein Kommentar sein, keine Bearbeitung, aber ein neuer Kommentar wäre versteckt, und ich habe gerade 45 Minuten damit verbracht, Fehler zu entwirren, weil diese wichtige Antwort unter drei oder vier Papageien-Antworten vergraben war. Ich versuche nur, die Zeit hier zu retten.]


1170
2017-10-07 21:33



Dies sind Schritte, wenn Sie sich in einer Shared Hosting-Umgebung befinden und Python aus der Quelle installieren und kompilieren müssen und dann venv aus Ihrer Python-Version erstellen müssen. Für Python 2.7.9 würden Sie etwas in diese Richtung tun:

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

virtuelles 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   

Natürlich kann dies für jede Situation gelten, in der Sie die exakte Umgebung replizieren möchten, in der Sie arbeiten und bereitstellen.


164
2017-07-02 22:17



AKTUALISIEREN:  Für Python3.6, das unten pyvenv Skript ist veraltet. Stattdessen,   die Python Docs vorschlagen Erstellen der virtuellen Umgebung mit dem folgenden Befehl:

python3 -m venv <myenvname>

Verwenden Sie für python3 (3.3+) entweder die obige Methode oder die Skript  pyvenv Befehl.

pyvenv /path/to/new/virtual/environment

Bitte beachte, dass venv lässt nicht zu, dass virtualenv mit anderen Versionen von Python erstellt wird. Installieren und verwenden Sie dazu das virtualenv  Paket.


132
2017-09-26 22:46



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

90
2017-11-04 15:15



Unter Windows funktioniert das für mich:

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

ohne das python.exe ich habe WindowsError: [Error 5] Access is denied  Ich habe Python 2.7.1 mit virtualenv 1.6.1 installiert, und ich wollte Python 2.5.2.


63
2017-07-31 21:04



Es gibt einen einfacheren Weg,

virtualenv venv --python=python2.7

Dank eines Kommentars funktioniert das nur, wenn Sie python2.7 auf Systemebene installiert haben (z. B. /usr/bin/python2.7).

Andernfalls, wenn Sie Homebrew verwenden, können Sie den Pfad verwenden, um Ihnen zu geben, was Sie wollen.

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

Sie können den Pfad zu Ihrer Python-Installation mit finden

which python

Dies funktioniert auch mit Python 3.

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

Letztendlich kondensierend zu:

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

56
2017-11-01 11:59



Mac OS X 10.6.8 (Schneeleopard):

1) Wenn du es tust pip install virtualenvDer Befehl pip ist einer Ihrer Python-Versionen zugeordnet virtualenv wird in diese Version von Python installiert. Du kannst tun

 $ which pip   

um zu sehen, welche Version von Python das ist. Wenn Sie etwas sehen wie:

 $ which pip
 /usr/local/bin/pip

dann mach:

$ 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

Sie können die Python-Version in der Ausgabe sehen.

Dies ist standardmäßig die Version von Python, die für jede neu erstellte Umgebung verwendet wird. Sie können jedoch jede Version von Python, die auf Ihrem Computer installiert ist, in einer neuen Umgebung mit dem verwenden -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 erstellt im aktuellen Verzeichnis einen Ordner, der   enthält die ausführbaren Python-Dateien und eine Kopie des Pips   [Befehl], mit dem Sie andere Pakete installieren können.

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

virtualenv kopiert einfach Python von einem Speicherort auf Ihrem Computer in das neu erstellte my_env / bin / -Verzeichnis.

2) Das System Python ist in /usr/bin, während die verschiedenen Python-Versionen, die ich installiert habe, standardmäßig installiert waren in:

 /usr/local/bin

3) Die verschiedenen Pythons, die ich installiert habe, haben Namen wie python2.7 oder python3.2und ich kann diese Namen anstelle von vollständigen Pfaden verwenden.

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

1) Ich hatte ein paar Probleme damit, virtualenvwrapper zu arbeiten. Dies ist, was ich am Ende eingefügt habe ~/.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) Die -p option funktioniert anders mit virtualenvwrapper: Ich muss den vollständigen Pfad zum Python-Interpreter angeben, der in der neuen Umgebung verwendet werden soll (wenn ich nicht die Standard-Python-Version verwenden möchte):

$ 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. 

Im Gegensatz zu virtualenv erstellt virtualenvwrapper die Umgebung an der Position, die durch die Umgebungsvariable $ WORKON_HOME angegeben wird. Das hält all Ihre Umgebungen an einem Ort.


26
2018-01-15 20:43