2009-07-10 10 views
15

Story: Eine der App, die ich auf Python 2.4 und andere auf 2.6 arbeiten. Ich habe versucht, einen sym-Link von Python2.4 zu Python zu machen, und die Dinge begannen auf ubuntu jaunty loszubrechen. Nun lade ich jede Abhängigkeit von 2.4 herunter und installiere sie mit python2.4 setup.py install. Die Abhängigkeiten scheinen endlos zu sein.Switch-Versionen von Python

Frage1: Wie werde ich jedem Framework sagen, die gehen und Version so und so pf verwenden python wie Tag django 2.6 zu verwenden und sagen mjango 2.4 zu verwenden? Etwas wie wir sagen verwenden Datenbank Datenbankname irgendwie Syntax.

Frage2: Gibt es elegantere Möglichkeit, zwischen den Versionen zu wechseln, da mein Hack der Symlinking ein virtuelles Desaster war?

Question3: Kann ich eine deb herunterladen für sagen hardy und machen munter glauben es ist für sie?

Antwort

31

Verwenden Sie Virtualenv.

Hier finden Sie weitere Informationen: Working with virtualenv.

Mit virtualenv können Sie eine neue virtuelle Python-Umgebung mit der gewünschten Python-Version für jedes Projekt oder jede Anwendung erstellen. Sie können dann die geeignete Umgebung aktivieren, wenn Sie sie benötigen.

auf meiner Antwort erweitern:

Sie mehrere Versionen von Python auf Ihrem Computer installieren können (ich habe 2.4, 2.5, 2.6 und 3.1 auf meinem Rechner - ich installiere jede von der Quelle). Ich benutze einen Mac und behalte mein System Python als das, was OS X als Standard setzt.

Ich verwende easy_install, um Pakete zu installieren. Auf ubuntu können Sie easy_install wie diese:

sudo apt-get install python-setuptools 

installieren virtualenv dann tun:

easy_install virtualenv 

Ich neige dazu, ein neues virtualenv für jedes Projekt erstellen ich arbeite und es nicht geben Zugriff auf die globalen Site-Pakete. Dies hält alle Pakete dicht beieinander und ermöglicht mir die spezifischen Versionen von allem, was ich brauche.

virtualenv -p python2.6 --no-site-packages ~/env/NEW_DJANGO_PROJECT 

Und dann, wenn ich etwas tue zu diesem Projekt wird es aktiviert:

source ~/env/NEW_DJANGO_PROJECT/bin/activate 

Wenn ich Python laufe jetzt nutzt es diesen neuen Python. Wenn ich easy_install verwende, werden Dinge in meiner neuen virtuellen Umgebung installiert.

Also sollte virtualenv in der Lage sein, alle Ihre Probleme zu lösen.

+0

was hätte ich mehr verlangen können, danke somuch – dhaval

+3

Der Befehl aktivieren hat einen Schrägstrich zwischen bin und aktivieren: source ~/env/NEW_DJANGO_PROJECT/bin/aktivieren – CoverosGene

3

Eine grassroot Ansatz als Virtualenv ist die Seite-an-Seite-Installation von zwei Python-Versionen.

Wenn es eine vorhandene Installation ist, und Sie möchten eine zweite Installation in den gleichen Root-Pfad (zB/usr/local), dieses Ziel verwenden, wenn sie installieren:

make altinstall 

Wenn Ihre zweite Installation Python ist 2.6, das wird Sie mit einem /usr/local/bin/python2.6 neben dem alten/usr/local/bin/python verlassen.

Eine einfache Möglichkeit, zwischen diesen beiden Versionen zu wechseln, ist die Verwendung eines Shell-Alias ​​(alias python =/usr/local/bin/python2.6) in der Shell, in der Sie den Interpreter aufrufen. Aber das funktioniert nicht über Sub-Shells und Shebang-Aufrufe.

+0

Alias ​​klingt besser als symlink, lass mich es versuchen thatm thx – dhaval

1

"Frage1: Wie werde ich jedem Framework sagen, dass gehen und Version so und so pf verwenden Python wie Tag Django 2.6 zu verwenden und sagen Mjango 2.4 zu verwenden?"

Sie führen sie einfach mit der spezifischen Python-Version, die sie benötigen. Führen Sie mjango mit /usr/bin/python2.4 und django mit /usr/bin/python2.6 aus. So einfach ist das.

"Frage2: Gibt es elegantere Möglichkeit, zwischen der Version zu wechseln, da mein Hack der Symlinking ein virtuelles Desaster war?"

Ja, siehe oben. Haben Sie zwei separate Python-Installationen und führen Sie diese explizit mit den verschiedenen Versionen aus.

"Frage3: Kann ich eine deb herunterladen für sagen hardy und machen munter glaub es für sie?"

Das funktioniert im Allgemeinen. Wenn dies nicht der Fall ist, liegt das daran, dass es in Hardy Abhängigkeiten gibt und in Jaunty nicht, und dann nicht.

Und hier ist eine Frage 4 haben Sie nicht gefragt, aber sollte haben. ;)

"Gibt es einen einfacheren Weg, all diese Python-Module herunterzuladen?"

Ja, gibt es. Installiere setuptools und benutze easy_install. Es hilft Ihnen nicht mit Bibliotheksabhängigkeiten für jene Python-Module, die C-Code haben und kompiliert werden müssen. Aber es wird mit allen anderen helfen. easy_install lädt alle Python-Abhängigkeiten des betreffenden Moduls auf einen Schlag herunter und installiert sie. Das macht es viel schneller, Python-Module zu installieren.

+0

sogar ich genieße easy_install so verpasste es zu erwähnen, im Allgemeinen ignorieren wir, was wir am meisten mögen – dhaval

+0

Und ich habe vergessen zu erwähnen, dass man Umgebungen mit virtualenv aktivieren kann, was nützlich ist, wenn man viele Skripte hat. Ah, gut. –

3

Ich finde http://github.com/utahta/pythonbrew viel einfacher zu installieren und zu verwenden als jede andere Lösung.

es einfach zu installieren, und Sie werden diese Optionen haben:

pythonbrew install 2.7.2 
pythonbrew use 2.7.2 # use 2.7.2 for a current terminal session 
pythonbrew switch 2.7.2 # use 2.7.2 by default system wide 
pythonbrew uninstall 2.7.2 

Hinweis: wenn Sie verwenden Linux-System mit vorinstallierter Python Betrieb, Schalt (systemweit) auf eine andere Version kann etwas schief gehen lassen, also sei vorsichtig.

6

Pythonbrew ist ein magisches Werkzeug. Das kann man auch als Python-Versionsmanager ähnlich dem von RVM-Ruby-Versionsmanager bezeichnen, aber Pythonbrew ist von Perlbrew inspiriert.

Pythonbrew ist ein Programm zum Automatisieren der Erstellung und Installation von Python in den Benutzern $ HOME.

Dependencies – curl 

Vor dem Pythonbrew Installieren, Installieren „curl“ in der Maschine, curl Unter den nachfolgenden Befehl im Terminal zu installieren, dass der Benutzer das Passwort geben, wenn Sie dazu aufgefordert.

$sudo apt-get install curl 

Nach dem curl Installieren, jetzt Pythonbrew installieren, kopieren und die folgenden Befehle in dem Terminal einfügen und das Passwort für den Benutzer bei entsprechender Aufforderung ein.

Recomended Methode der Installation - Einfache Installation

$ sudo easy_install pythonbrew 

Um die Installation abzuschließen, geben Sie den folgenden Befehl

$pythonbrew_install 

Alternative Installationsmethode:

Verwenden curl Befehl, um die neuesten herunterladen Version von Pythonbrew von GitHub.

curl -kLO http://github.com/utahta/pythonbrew/raw/master/pythonbrew-install 

Nach dem Download change „pythonbrew-install“ auf „ausführbar“

chmod +x pythonbrew-install 

Führen Sie dann die pythonbrew installierende im Terminal

./pythonbrew-install 

Nun ist die Pythonbrew installiert wurde in der “Home Directory” dh /home/user/.pythonbrew

Ne xt, kopieren und einfügen, die folgende Zeile bis zum Ende der ~/.bashrc

* HINWEIS: ändern “user” Ihrem Benutzernamen im System

source /home/user/.pythonbrew/etc/bashrc 

Das ist es! Schließen Sie das Terminal. Schritte zum Installieren verschiedener Versionen von Python:

Öffnen Sie ein neues Terminal, geben Sie den folgenden Befehl ein oder kopieren Sie ihn und fügen Sie ihn ein.

$pythonbrew install 2.6.6 

Dies wird Python 2.6.6 installieren und 3.2 Python 2.7 oder Python zu installieren, in dem vorherigen Befehl die Versionsnummer ändern.

$pythonbrew install 2.7 

oder

$pythonbrew install 3.2 

Update: Wenn Sie Fehler erhalten, während dann installieren Installieren Sie den folgenden Befehl verwenden.

$pythonbrew install --force 2.7 

oder

$pythonbrew install --force 3.2 

Wie verschiedene Versionen von Python verwalten in dem System installiert

Zum Beispiel, wenn Python 2.6.6, Python 2.7 und Python 3.2 in Ihrem System installiert sind, kann zwischen den Versionen Schalen wie folgt durchgeführt werden:

Standardmäßig ist Python 2.6.6 aktiv und in Um zu Python 2.7 zu wechseln, verwenden Sie den folgenden Befehl:

$pythonbrew switch 2.7 

Der Standard Python wird in Python 2.7 geändert.

Jetzt, um zu Python 3 zu wechseln.2 Ändern Sie die Versionsnummer im vorherigen Befehl.

$pythonbrew switch 3.2 

Verwenden Sie den folgenden Befehl

$pythonbrew list 

Verwenden unter Befehl die verfügbaren Python-Versionen zu überprüfen oder Liste

$pythonbrew list -k 

zu installieren zu deinstallieren zu überprüfen oder Liste, um die installierten Python-Versionen jeden Verwenden Sie den folgenden Befehl der installierten Python-Version (zum Beispiel Python 2.7 zu deinstallieren).

$pythonbrew uninstall 2.7 

den unter Befehl der Pythonbrew

$pythonbrew update 

Benutzen Sie den unteren Befehl aktualisieren, um die Pythonbrew zu deaktivieren und die Standardversion

$pythonbrew off 

Genießen Sie die Erfahrung der Installation mehrere Versionen aktivieren von Python in einer einzigen Linux/Ubuntu-Maschine!

+0

Es scheint, dass 'Pythonbrew' nicht mehr aktiv entwickelt wird. – ThomasW

1

pyenv ist ein weiterer Python-Manager. Die README.md zu diesem Link hat einen guten Satz von Anweisungen, aber sie sind im Grunde:

$ cd 
$ git clone git://github.com/yyuu/pyenv.git .pyenv 

Dann $ PATH einrichten.

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile 
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile 
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile 

Installieren Sie die gewünschten Versionen von Python:

$ pyenv install 2.7.8 

Nach der Installation Sie diese ausführen müssen:

$ pyenv rehash 

auf die Version von Python wechseln dann Sie ausführen möchten, für die Schale:

$ pyenv shell 2.7.8 
0

Umzug in das Projektverzeichnis:

eine Umgebung erstellen: virtualenv -p python2.7 --no-site-packages ~/env/twoseven

Dann aktivieren Sie Ihre Quelle: source ~/env/twoseven/bin/activate