Hintergrund :
Da ich Python-Programme entwickle, die auf verschiedenen Python-Versionen ausgeführt werden müssen, habe ich verschiedene Python-Versionen auf meinem Computer installiert.
Ich verwende FC 13, daher war Python 2.6 in /usr/bin/python2.6
und vorinstalliert /usr/lib/python2.6
.
Ich habe Python 2.5 aus dem Quellcode installiert, und um die Dinge sauber zu halten, habe ich die --prefix=/usr
Option verwendet, mit der Python in /usr/bin/python2.5
und installiert wurde /usr/lib/python2.5
.
Wenn ich jetzt python
meine Eingabeaufforderungsshows ausführe , verwende ich Version 2.5. Ich habe jedoch einige Probleme mit der Installation.
Paketverwaltung :
Mit easy_install werden Pakete immer in installiert /usr/lib/python2.6/site-packages/
. Ich habe setuptools
.egg für Python 2.5 heruntergeladen und versucht, es zu installieren, aber es gibt mir einen Fehler:
/usr/lib/python2.5/site-packages does NOT support .pth files
Es scheint, dass Python2.5 nicht in meinem PYTHONPATH enthalten ist. Ich dachte, die Standardinstallation würde sich zum PYTHONPATH hinzufügen, aber wenn ich echo $PYTHONPATH
beim Promt schreibe, erhalte ich nur eine leere Zeile.
Dies klingt nach einer perfekten Anwendung für virtualenv , einem sehr beliebten Tool zum Erstellen isolierter Python-Umgebungen. Dies ist ein Beispielbefehl zum Angeben der Version von Python
quelle
virtualenv
die Lösung in diesem Fall ist. Siehe meine Antwort.Das liegt daran, dass distutils allen Skripten, die installiert werden, eine Shebang-Zeile hinzufügt. Wenn Sie das
easy_install
Skript direkt ausführen, wird es mit dem Interpreter ausgeführt, mit dem es installiert wurde (entsprechend der shebang-Zeile). Waseasy_install
gerade läuft, hängt von deinemPATH
nicht abPYTHONPATH
. Wenn Sie ein Paket in einer Python 2.5-Instanz installieren möchten, müssen Sie den zu verwendendeneasy_install
Python-Interpreter angeben:Streng genommen
virtualenv
hilft das hier nicht weiter, da es im Kontext von Basis- Python erstellt werden muss, was genau dasselbe Problem wie beim Ausführen darstellteasy_install
. Dafür ist das--python
Argument davirtualenv
. Aus irgendeinem Grundeasy_install
liefert es kein analoges Argument, so dass es mit einem bestimmten Python-Interpreter wie oben gezeigt ausgeführt werden muss.quelle
Ich benutze auch Fedora 13 und
PYTHONPATH
ist nicht eingestellt.In Python erhalten
sys.path
Sie eine Liste der Pfade, die zum Importieren von Skripten verwendet werden.Ich bin nicht vertraut damit, wie das
easy_install
Zielverzeichnis festgelegt wird, aber ich bin mir sicher, dass es ein Befehlszeilenargument geben könnte.Geben Sie an, unter welcher Python-Version
easy_install
Sie arbeiten möchten, indem Sie Ihrem Befehl den vollständigen Pfad zum gewünschten Python voranstellen.Überprüfen Sie auch, ob
easy_install
ein Symlink in bin zu einem Skript in einer von Ihnen installierten Python-Version vorhanden ist.quelle
Virtualenv ist hier definitiv ein Glücksfall.
In meinem Setup wurde die Umgebungsvariable
VIRTUALENV_USE_DISTRIBUTE
auf 1 gesetzt, sodass das modernere Distribute-Paket anstelle von setuptools verwendet wird. Ich habe virtuelle Umgebungen für die beiden Python-Versionen auf meinem System wie folgt erstellt:Ich habe dann drei Aliase erstellt in
.bashrc
:Somit kann ich verwenden
py2
, um zu einem Standard von Python 2.6 undpy3
zu einem Standard von Python 3.2 zu wechseln. Die Eingabeidle
wird ausgeführt, welche Version von IDLE für die virtuelle Umgebung geeignet ist, in der ich mich befinde.Die Installation von Paketen in einer dieser virtuellen Umgebungen erfordert normalerweise nur einen
pip install
Befehl.quelle