Mehrere Python-Versionen auf demselben Computer?

86

Gibt es irgendwo auf der Python-Website eine offizielle Dokumentation darüber, wie mehrere Versionen von Python unter Linux auf demselben Computer installiert und ausgeführt werden können?

Ich kann Unmengen von Blog-Posts und Antworten finden, aber ich möchte wissen, ob es einen "normalen" offiziellen Weg gibt, dies zu tun?

Oder hängt das alles vom Betriebssystem ab?

Andriy Drozdyuk
quelle

Antworten:

79

Ich denke, es ist völlig unabhängig. Installieren Sie sie einfach, dann haben Sie die Befehle zB /usr/bin/python2.5und /usr/bin/python2.6. Link /usr/bin/pythonzu dem, den Sie als Standard verwenden möchten.

Alle Bibliotheken befinden sich ohnehin in separaten Ordnern (benannt nach der Version).

Wenn Sie die Versionen manuell kompilieren möchten, stammt dies aus der Readme-Datei des Python-Quellcodes:

Mehrere Versionen installieren

Wenn Sie auf Unix- und Mac-Systemen mehrere Versionen von Python mit demselben Installationspräfix (Argument --prefix für das Konfigurationsskript) installieren möchten, müssen Sie darauf achten, dass Ihre primäre ausführbare Python-Datei nicht durch die Installation einer anderen Version überschrieben wird. Alle mit "make altinstall" installierten Dateien und Verzeichnisse enthalten die Haupt- und Nebenversion und können somit nebeneinander leben. "make install" erstellt auch $ {prefix} / bin / python3, das auf $ {prefix} /bin/pythonX.Y verweist. Wenn Sie mehrere Versionen mit demselben Präfix installieren möchten, müssen Sie entscheiden, welche Version (falls vorhanden) Ihre "primäre" Version ist. Installieren Sie diese Version mit "make install". Installieren Sie alle anderen Versionen mit "make altinstall".

Wenn Sie beispielsweise Python 2.5, 2.6 und 3.0 installieren möchten, wobei 2.6 die primäre Version ist, führen Sie "make install" in Ihrem 2.6-Build-Verzeichnis und "make altinstall" in den anderen aus.

Felix Kling
quelle
4
Vielen Dank, das "make install" auf dem primären und "make altinstall" auf dem sekundären machte es deutlich.
Andriy Drozdyuk
4
Gibt es eine richtige Möglichkeit, Bibliotheken zwischen Versionen zu teilen? Angenommen, ich habe MySQLdb für 2.6 und dann 2.7 installiert. Wie mache ich MySQLdb auch für 2.7 verfügbar?
Romeroqj
Alle von Ihnen angegebenen Informationen beziehen sich auf Unix / Linux und Mac OS und sind daher eindeutig nicht "völlig unabhängig" vom Betriebssystem, wie das OP verlangt. Für Windows ist der Prozess ganz anders, aber genauso einfach.
wwwayne
28

Unter Windows werden sie in separaten Ordnern "C: \ python26" und "C: \ python31" installiert, aber die ausführbaren Dateien haben denselben Namen "python.exe".

Ich habe einen weiteren Ordner "C: \ python" erstellt, der "python.bat" und "python3.bat" enthält, die als Wrapper für "python26" bzw. "python31" dienen, und der PATHUmgebungsvariablen "C: \ python" hinzugefügt .

Auf diese Weise kann ich meine .bat Python-Wrapper eingeben pythonoder python3eingeben, um den gewünschten zu starten.

Unter Linux können Sie mit dem #!Trick angeben, welche Version ein Skript verwenden soll.

der Blechmann
quelle
Was kann man diesen .bat-Dateien hinzufügen?
Aidis
Diese Antwort wird nicht nur deshalb positiv bewertet, weil sie sehr Windows-spezifisch ist und die Frage Linux-bezogen war, ansonsten großartige Informationen.
Jim Aho
2
Benutzer existiert nicht mehr, ich wollte wirklich diese Batch-Datei
Wargog
6
Dies ist, was ich in meine python.bat-Datei eingefügt habe (nur eine Zeile): "c: \ python27 \ python% *" Dann rufe ich es einfach normal auf, dh 'python test.py' und% * greift nach allen Argumenten und übergeben Sie es an die eigentliche ausführbare Datei. Sie können mklink auch direkt in Ihrem Ordner C: \ bin verwenden. Siehe hier für die Details: stackoverflow.com/a/13953614/865929
Sean Glover
1
Jetzt können Sie einfach py -3.4oder ausführen py -2.7und das Programm py(unter C:\Windows) wählt diesen Python-Interpreter aus (vorausgesetzt, er ist installiert).
JamesThomasMoon1979
12

Update 2019: Verwenden asdf

In diesen Tagen schlage ich vor, asdf zu verwenden, um verschiedene Versionen von Python-Interpreten nebeneinander zu installieren.

Hinweis 1: Funktioniert asdfnicht nur für Python, sondern für alle wichtigen Sprachen.

Hinweis 2: Funktioniert asdfgut in Kombination mit gängigen Paketmanagern wie Pipenv und Poetry .

Wenn Sie asdf installiert haben , können Sie einfach neue Python-Interpreter herunterladen / installieren:

# Install Python plugin for asdf:
asdf plugin-add python

# List all available Python interpreters:
asdf list-all python

# Install the Python interpreters that you need:
asdf install python 3.7.4
asdf install python 3.6.9
# etc...

# If you want to define the global version:
asdf global python 3.7.4

# If you want to define the local (project) version:
# (this creates a file .tool-versions in the current directory.)
asdf local python 3.7.4

Alte Antwort: Installieren Sie Python von der Quelle

Wenn Sie mehrere Versionen von Python (neben der Hauptversion) unter Ubuntu / Mint installieren müssen : (sollte unter anderen Unixen ähnlich funktionieren.)

1) Installieren Sie die erforderlichen Pakete für die Quellkompilierung

$ sudo apt-get install build-essential checkinstall
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

2) Laden Sie die gewünschte Python-Version herunter und extrahieren Sie sie

Laden Sie Python Source für Linux als Tarball herunter und verschieben Sie es nach /usr/src.

Extrahieren Sie das heruntergeladene Paket. (Ersetzen Sie die 'x' durch Ihre heruntergeladene Version)

$ sudo tar xzf Python-x.x.x.tgz

3) Kompilieren und installieren Sie Python Source

$ cd Python-x.x.x
$ sudo ./configure
$ sudo make altinstall

Ihr neuer Python-Bin befindet sich jetzt in /usr/local/bin. Sie können die neue Version testen:

$ pythonX.X -V
Python x.x.x
$ which pythonX.X
/usr/local/bin/pythonX.X

# Pip is now available for this version as well:
$ pipX.X -V
pip X.X.X from /usr/local/lib/pythonX.X/site-packages (python X.X)
Rotareti
quelle
6

Wie verschiedene Python-Versionen installiert werden, hängt in der Tat vom Betriebssystem ab.

Wenn Sie jedoch unter Linux arbeiten, können Sie ein Tool wie Pythonbrew oder Pythonz verwenden , um die Verwaltung und den Wechsel zwischen verschiedenen Versionen zu vereinfachen .

Rodrigue
quelle
Ich habe auf einem Mac mit configure / make altinstall installiert. Bisher keine Probleme.
Evgeny
Ist es möglich, eine $user1andere Python-Version als die Standardversion anzugeben?
Roland
1
@ Roland pyenvwird dafür arbeiten. In der Readme-Datei unter dem oben angegebenen Link:> [Lets] ändern Sie die globale Python-Version pro Benutzer.
Theeddieh
5

Ich benutze Mac und der beste Weg, der für mich funktioniert hat, ist Pyenv!

Die folgenden Befehle gelten für Mac, sind jedoch Linux ziemlich ähnlich (siehe die folgenden Links).

#Install pyenv
brew update
brew install pyenv

Angenommen, Sie haben Python 3.6 als primäre Version auf Ihrem Mac:

python --version 

Ausgabe:

Python <your current version>

Installieren Sie jetzt Python 3.7 und listen Sie zuerst alle auf

pyenv install -l

Nehmen wir 3.7.3:

pyenv install 3.7.3

Stellen Sie sicher, dass dies im Terminal ausgeführt wird (fügen Sie es zu ~ / .bashrc oder ~ / .zshrc hinzu):

export PATH="/Users/username/.pyenv:$PATH"
eval "$(pyenv init -)"

Lassen Sie es uns jetzt nur auf dem geöffneten Terminal / der geöffneten Shell ausführen :

pyenv shell 3.7.3

Jetzt renn

python --version

Ausgabe:

Python 3.7.3

Und nicht weniger wichtig ungesetzt es in der geöffneten Schale / iTerm:

pyenv shell --unset

Sie können es laufen global oder lokal als auch

Kohn1001
quelle
1

Paketmanager - Benutzerebene

Für einen Paketmanager, der mehrere Python-Versionen installieren und verwalten kann, sind dies gute Optionen:

  • pyenv - kann nur Versionen von Python installieren und verwalten
  • asdf - kann viele verschiedene Sprachen installieren und verwalten

Diese Paketmanager haben den Vorteil, dass es möglicherweise einfacher ist, sie einzurichten und mehrere Python-Versionen mit ihnen zu installieren, als Python aus dem Quellcode zu installieren. Sie bieten auch Befehle zum einfachen Ändern der verfügbaren Python-Version (en) mithilfe von Shims und zum Festlegen der Python-Version pro Verzeichnis.

Dieser Nachteil besteht darin, dass sie standardmäßig auf Benutzerebene (in Ihrem Home-Verzeichnis) installiert werden und ein wenig Konfiguration auf Benutzerebene erfordern. Sie müssen Ihre ~/.profileund ~/.bashrcähnliche Dateien bearbeiten . Dies bedeutet, dass es nicht einfach ist, mit ihnen mehrere Python-Versionen global für alle Benutzer zu installieren. Zu diesem Zweck können Sie neben der vorhandenen Python-Version des Betriebssystems von der Quelle aus installieren.


Installation von der Quelle - systemweit

Für diese Methode benötigen Sie Root-Rechte.

Weitere Überlegungen und Optionen finden Sie in der offiziellen Python-Dokumentation zum Erstellen aus dem Quellcode .

/usr/localist der festgelegte Speicherort für einen Systemadministrator, an dem gemeinsam genutzte (systemweite) Software installiert werden kann. Die Unterverzeichnisse sind daher ein guter Ort, um die Python-Quelle herunterzuladen und zu installieren. Siehe Abschnitt 4.9 des Dateihierarchiestandards der Linux Foundation .

Installieren Sie alle Build-Abhängigkeiten. Verwenden Sie auf Debian-basierten Systemen:

apt update
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev

Wählen Sie aus, welche Python-Version Sie installieren möchten. Eine Liste finden Sie auf der Seite Python Source Releases .

Laden Sie die Datei herunter und entpacken Sie sie /usr/local/src. Ersetzen Sie sie X.X.Xunten durch die Python-Version (dh 3.8.2).

cd /usr/local/src
wget https://www.python.org/ftp/python/X.X.X/Python-X.X.X.tgz
tar vzxf Python-X.X.X.tgz

Legen Sie vor dem Erstellen und Installieren die CFLAGSUmgebungsvariable mit den erforderlichen C-Compiler-Flags fest (siehe makeDokumentation zu GNU ). Dies ist normalerweise nicht für den allgemeinen Gebrauch erforderlich. Wenn Sie jedoch beispielsweise ein uWSGI-Plugin mit dieser Python-Version erstellen möchten, möchten Sie möglicherweise die Flags wie -fPICfolgt setzen:

export CFLAGS='-fPIC'

Ändern Sie das Arbeitsverzeichnis in das entpackte Python-Quellverzeichnis und konfigurieren Sie den Build. Möglicherweise möchten Sie die --enable-optimizationsOption im ./configureBefehl für die profilgesteuerte Optimierung verwenden . Verwenden Sie --prefix=/usr/localdie richtigen Unterverzeichnisse zu installieren ( /usr/local/bin, /usr/local/libusw.).

cd Python-X.X.X
./configure --enable-optimizations --prefix=/usr/local

Erstellen Sie das Projekt mit makeund installieren Sie mit make altinstall, um zu vermeiden, dass bei der Installation mehrerer Versionen Dateien überschrieben werden. Siehe die Warnung auf dieser Seite der Python-Build-Dokumentation.

make -j 4
make altinstall

Dann sollten Sie in der Lage sein, Ihre neuen Python- und Pip-Versionen mit pythonX.Xund pipX.X(dh python3.8und pip3.8) auszuführen . Beachten Sie, dass Sie den gesamten Pfad ( /usr/local/bin/pythonX.X) angeben oder einen Pfad festlegen müssen, wenn die Nebenversion Ihrer neuen Installation mit der Version des Betriebssystems übereinstimmt (z. B. wenn Sie python3.8.4 installiert haben und das Betriebssystem python3.8.2 verwendet hat) Alias ​​zur Verwendung dieser Version.

blaue Katze
quelle
0

Dies hängt am stärksten vom verwendeten Paketverteilungssystem ab. Mit MacPorts können Sie beispielsweise mehrere Python-Pakete installieren und mithilfe des pyselectDienstprogramms problemlos die Standardeinstellungen zwischen diesen umschalten. Sie können jederzeit die verschiedenen Python-Interpreter aufrufen, indem Sie den vollständigen Pfad angeben, und Sie können eine Verknüpfung zu allen Python-Bibliotheken und -Headern herstellen, indem Sie die vollständigen Pfade für diese bereitstellen.

Unabhängig davon, wie Sie die Versionen installieren, können Sie sie separat ausführen, solange Sie Ihre Installationen getrennt halten.

Seth Johnson
quelle
Was ist ein Paketverteilungssystem?
Andriy Drozdyuk
@drozzy: Zum Beispiel RPM von OpenSuse oder apt von Debian-basierten Distributionen oder Portage von Gentoo usw. Grundsätzlich ist es ein Tool zum Installieren von Software.
Felix Kling
0

Ich habe das mit dem Anaconda Navigator gemacht. Ich habe anaconda navigator installiert und zwei verschiedene Entwicklungsumgebungen mit verschiedenen Python-Versionen erstellt

und wechseln Sie zwischen verschiedenen Python-Versionen, indem Sie Umgebungen wechseln oder aktivieren und deaktivieren.

Installieren Sie zuerst den Anaconda Navigator und erstellen Sie dann Umgebungen.

Hier finden Sie Hilfe zum Verwalten von Umgebungen

https://docs.anaconda.com/anaconda/navigator/tutorials/manage-environments/

Hier ist das Video, um es mit conda zu machen

https://youtu.be/EGaw6VXV3GI

Mohitesachin217
quelle