So führen Sie mehrere Python-Versionen unter Windows aus

170

Ich hatte zwei Versionen von Python auf meinem Computer installiert (Versionen 2.6 und 2.5). Ich möchte 2.6 für ein Projekt und 2.5 für ein anderes ausführen.

Wie kann ich angeben, welche ich verwenden möchte?

Ich arbeite an Windows XP SP2.

Bilal Basharat
quelle
3
Gute Tipps zum Stellen von Fragen sind, zu erklären, was Sie versucht haben und auf welche Weise dies fehlgeschlagen ist. Also: Was hast du versucht und auf welche Weise hat das nicht funktioniert?
Lennart Regebro
Beachten Sie, dass ich unter Windows keine vorherigen Fragen dazu finden konnte. Daher habe ich den Titel geändert, um dies widerzuspiegeln.
Lennart Regebro
Wenn Sie 3.3 zusammen mit 2.7 ausführen möchten, ist dies die standardisierteste Antwort: - stackoverflow.com/questions/15912063/…
Omar Tariq

Antworten:

135

Das Ausführen einer anderen Python-Kopie ist so einfach wie das Starten der richtigen ausführbaren Datei. Sie erwähnen, dass Sie eine Python-Instanz über die Befehlszeile durch einfaches Eingeben gestartet haben python.

Unter Windows wird die %PATH%Umgebungsvariable durchsucht und nach einer ausführbaren Datei gesucht, entweder nach Batchdatei ( .bat), Befehlsdatei ( .cmd) oder einer anderen ausführbaren Datei (dies wird von der PATHEXTUmgebungsvariablen gesteuert ), die dem angegebenen Namen entspricht. Wenn die richtige Datei zum Ausführen gefunden wird, wird die Datei ausgeführt.

Wenn Sie nun zwei Python-Versionen 2.5 und 2.6 installiert haben, enthält der Pfad beide Verzeichnisse. So etwas wie PATH=c:\python\2.5;c:\python\2.6Windows überprüft den Pfad nicht mehr, wenn eine Übereinstimmung gefunden wird.

Was Sie wirklich tun müssen, ist, eine oder beide Anwendungen wie c:\python\2.5\python.exeoder explizit aufzurufen c:\python\2.6\python.exe.

Die andere Alternative besteht darin, eine Verknüpfung zu dem jeweiligen python.exeaufrufenden einen von ihnen python25und dem anderen zu erstellen python26. Sie können dann einfach python25auf Ihrer Befehlszeile ausführen .

aodj
quelle
41
wie man diese Abkürzung erstellt
Bilal Basharat
8
Navigieren Sie in Windows zu dem Ordner, der die Python-Version enthält, für die Sie eine Verknüpfung erstellen möchten. Klicken Sie dann mit der rechten Maustaste und erstellen Sie eine Verknüpfung. Sie können es dann umbenennen.
Aodj
3
Es tut mir leid, einen langen toten Beitrag ausgegraben zu haben, aber wie können Sie die Verknüpfung zum Laufen bringen, ohne die Erweiterung .lnk zu benötigen?
Nathan Tornquist
7
Wenn eine Verknüpfung nicht funktioniert, können Sie wie bei @FJ angegeben einfach kopieren und umbenennen. Andernfalls können Sie mit '' mklink '' in der Befehlszeile eine symbolische Verknüpfung herstellen.
Aodj
7
Wäre es nicht der beste Weg, eine Bat-Datei mit den Namen python25 und python26 zu erstellen und diese die entsprechende Version aufrufen zu lassen? Dann müssten Sie nur noch diese 2 Bat-Dateien neben ihre Binärdateien stellen.
Jeremy Cantrell
100

Hinzufügen von zwei weiteren Lösungen für das Problem:

  • Verwenden pylauncher (wenn Sie Python 3.3 oder neuer gibt es keine Notwendigkeit , es zu installieren , wie es kommt mit Python bereits) und entweder shebang Zeilen in Skripten hinzuzufügen;

#! c:\[path to Python 2.5]\python.exe- für Skripte, die mit Python 2.5 ausgeführt werden sollen
#! c:\[path to Python 2.6]\python.exe- für Skripte, die mit Python 2.6 ausgeführt werden sollen

oder anstatt den pythonBefehl auszuführen, führen Sie pylauncher command ( py) aus und geben Sie an, welche Python-Version Sie möchten.

py -2.6- Version 2.6
py -2- zuletzt installierte Version 2.x
py -3.4- Version 3.4
py -3- zuletzt installierte Version 3.x.

  • Installieren Sie virtualenv und erstellen Sie zwei virtualenvs.

virtualenv -p c:\[path to Python 2.5]\python.exe [path where you want to have virtualenv using Python 2.5 created]\[name of virtualenv]

virtualenv -p c:\[path to Python 2.6]\python.exe [path where you want to have virtualenv using Python 2.6 created]\[name of virtualenv]

beispielsweise

virtualenv -p c:\python2.5\python.exe c:\venvs\2.5

virtualenv -p c:\python2.6\python.exe c:\venvs\2.6

Dann können Sie das erste aktivieren und so mit Python 2.5 arbeiten.
c:\venvs\2.5\activate
Wenn Sie zu Python 2.6 wechseln möchten, tun Sie dies

deactivate  
c:\venvs\2.6\activate
Piotr Dobrogost
quelle
pylauncher scheint eine Prototyp-Implementierung von PEP 397 zu sein, die bereits 2011 als Standards Track akzeptiert wurde. Wissen Sie, warum der Launcher immer noch nicht mit Python für Windows vertrieben wird oder warum es immer noch nur die Prototyp-Implementierung von Vinay Sajip gibt?
Martineau
4
Pylauncher wird mit Python ab Version 3.3 vertrieben - siehe python.org/download/releases/3.3.0 . Ich denke auch, dass die Implementierung von Vinay Sajip nicht nur ein Prototyp ist.
Piotr Dobrogost
1
Danke für die Klarstellung. IMHO Pylauncher sollte auch als Teil der neuesten Python 2-Version verteilt werden, da Benutzer dieser Version eher diejenigen verwenden, die mehrere Versionen installieren möchten (und dies eher tun, wenn sie sich der Funktionalität und Verfügbarkeit bewusst sind).
Martineau
StackOverflow sollte mehrere Upvotes zulassen, Ihre Antwort verdient unendlich viele Upvotes! Ernsthaft, wo bist du gewesen, Bruder? : D Einfach, klar und natürlich funktionierend!
3bdalla
Sehr gute Vorschläge. Ich habe die zweite (virtualenv) verwendet. Der einzige Unterschied, den ich fand, war, dass ich '\ scripts' in den zu aktivierenden Pfad aufnehmen musste, z c:\venvs\2.5\scripts\activate. Dies ist unter Windows 10 der Fall, wenn dies einen Unterschied macht. Davon abgesehen funktioniert es wie ein Zauber, danke.
Dave Marley
53

Ab Python 3.3 gibt es den offiziellen Python-Launcher für Windows ( http://www.python.org/dev/peps/pep-0397/ ). Jetzt können Sie die verwenden #!pythonX, um die gewünschte Version des Interpreters auch unter Windows zu ermitteln. Weitere Details finden Sie in meinem anderen Kommentar oder lesen Sie den PEP 397.

Zusammenfassung: Die py script.pyStarts der Python - Version in angegeben #!oder Python 2 , wenn #!fehlt. Das py -3 script.pystartet den Python 3.

pepr
quelle
1
Dies ist die Antwort, die ich suche. Ich führe Windows 10 mit Python 2.7 und Python 3.4.3 aus. Geben Sie an der Eingabeaufforderung "py [python_version_number]" ein. Beispiel: py -3 oder py rufen die Python-Version auf, die Sie haben. Ich denke, Umgebungsvariablen müssen gesetzt werden, bevor Sie dies verwenden. das ist bequem für mich.
CodeMonkey
2
@Inuka: Es müssen keine Umgebungsvariablen festgelegt werden. Das Python-Installationsprogramm legt die Zuordnungen zur .pyErweiterung fest. Der Launcher selbst ist in C:\Windowsdem bereits installiert PATH. Auf diese Weise muss auch die PATHVariable nicht geändert werden.
Pepr
2
Vielen Dank für Ihre Antwort Kumpel. Auf diese Weise können wir auch den Pip aufrufen. py -2 -m pip installieren SomePackage oder py -3.4.3 -m pip installieren SomePackage
codemonkey
Ich denke, dies ist die einfachste und unkomplizierteste Lösung.
Prasad
46

Gemäß @alexander können Sie eine Reihe symbolischer Links wie unten erstellen. Platzieren Sie sie an einer Stelle, die in Ihrem Pfad enthalten ist, damit sie leicht aufgerufen werden können

> cd c:\bin
> mklink python25.exe c:\python25\python.exe
> mklink python26.exe c:\python26\python.exe

Solange sich c: \ bin oder wo immer Sie sie platziert haben, auf Ihrem Weg befindet, können Sie jetzt gehen

> python25
Christopher Hackett
quelle
4
Clevere Idee. BTW mklinkist nur nativ in Windows Vista / 2008 + verfügbar. Unter XP und Server 2003 kann stattdessen ein "Hardlink" erstellt werden fsutil hardlink create <new filename> <existing filename>, indem der <neue Dateiname> verwendet und an eine beliebige Stelle in Ihrem Pfad verschoben wird. Hardlinks funktionieren jedoch nur auf demselben Laufwerk.
Martineau
Dies ist eine gute Lösung. Ich bin mir nicht sicher, ob sie auch ohne ein NTFS-basiertes Dateisystem funktioniert.
Meawoppl
Ja, erfordert Unterstützung für symbolische NTFS-Links, von denen ich glaube, dass sie in Vista eingeführt wurden (ich kann mich irren). Für die Verwendung unter XP muss ein anderer Treiber verwendet werden . Klingt so, als wäre es irgendwann vor der allgemeinen Veröffentlichung ausgeschaltet worden.
Christopher Hackett
einfachste beste Lösung
Riesen
15
  1. Installieren Sie Python

    • C: \ Python27
    • C: \ Python36
  2. Umgebungsvariable

    • PYTHON2_HOME: C:\Python27
    • PYTHON3_HOME: C:\Python36
    • Path: %PYTHON2_HOME%;%PYTHON2_HOME%\Scripts;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;
  3. Datei umbenennen

    • C: \ Python27 \ python.exe → C: \ Python27 \ python2.exe
    • C: \ Python36 \ python.exe → C: \ Python36 \ python3.exe
  4. Pip

    • python2 -m pip install package
    • python3 -m pip install package
山 茶树 和 葡萄 树
quelle
Ich denke, mehr oder weniger ist dies die praktische Lösung für die Frage. Dies ist praktischer als der Ansatz, bei dem eine Verknüpfung / ein symbolischer Link zum Aufrufen des Python-Skripts verwendet wird. Anstatt die Datei umzubenennen, können wir die Binärdatei (python.exe) kopieren und einfügen und sie dann entsprechend ihrer Version umbenennen (wie in dieser Antwort gezeigt). Übrigens wäre der pythonBefehl für das Betriebssystem verwirrend.
Testbenutzer
Gute Antwort! Danke ~ @ 山 茶树 和 和 树
Bright Chang
14

Zum Beispiel für den Versionstyp 3.6 py -3.6. Wenn Sie auch 32-Bit- und 64-Bit-Versionen haben, können Sie einfach py -3.6-64oder eingeben py -3.6-32.

Mehran Jalili
quelle
3
Dies sollte die akzeptierte Antwort sein! Danke vielmals!
Xonshiz
3
Dies ist möglicherweise die beste Antwort, da keine Umbenennung von Dateien erforderlich ist und IDEs von Drittanbietern beide als normal erkennen!
Enchant97
Könnten Sie die Antwort mit mehr Erklärungen erweitern - wo ist diese pyausführbare Datei - ist es eine reine Windows-Ergänzung? Ist es möglich, dies in ein plattformübergreifendes Befehlszeilenskript zu integrieren, das oben steht: #!/usr/bin/env python3zum Beispiel?
Ed Randall
7

Wenn Sie Python installieren, werden andere Installationen anderer Hauptversionen nicht überschrieben. Durch die Installation von Python 2.5.x wird Python 2.6.x nicht überschrieben, obwohl durch die Installation von 2.6.6 2.6.5 überschrieben wird.

Sie können es also einfach installieren. Dann rufen Sie die gewünschte Python-Version auf. Beispielsweise:

C:\Python2.5\Python.exe

für Python 2.5 unter Windows und

C:\Python2.6\Python.exe

für Python 2.6 unter Windows oder

/usr/local/bin/python-2.5

oder

/usr/local/bin/python-2.6

unter Windows Unix (einschließlich Linux und OS X).

Bei der Installation unter Unix (einschließlich Linux und OS X) wird ein allgemeiner pythonBefehl installiert, der der letzte ist, den Sie installiert haben. Dies ist meistens kein Problem, da die meisten Skripte explizit /usr/local/bin/python2.5 oder etwas anderes aufrufen, um sich dagegen zu schützen. Aber wenn Sie das nicht wollen und wahrscheinlich auch nicht, können Sie es so installieren:

./configure
make
sudo make altinstall

Beachten Sie die "Altinstallation", die bedeutet, dass sie installiert wird , den Befehl jedoch nicht ersetzt python.

Unter Windows erhalten Sie meines Wissens keinen globalen pythonBefehl, daher ist dies kein Problem.

Lennart Regebro
quelle
danke für deine hilfe plz beantworte auch meine zweite frage: wie kann ich beide gleichzeitig ausführen? als ich erfolgreich von 2,5 auf 2,6 wechselte
Bilal Basharat
@Bilal Basharat: Windows ist ein Multitasking-Betriebssystem. Wenn Sie zwei Dinge gleichzeitig ausführen möchten, starten Sie einfach beide, sodass ich Ihre Frage nicht verstehe.
Lennart Regebro
Zur Zeit arbeite ich an Python2.5. Erarbeiten Sie mich einfach, wie kann ich auch 2.6 ausführen? Wenn ich 'Python' in die Windows-Eingabeaufforderung schreibe, um die Python-Shell aufzurufen, erscheint Python2.5. in c Laufwerk hatte ich beide Versionen installiert. wenn ich zu C: \ Python2.6 \ Python.exe gehe. als Python2.6 vorübergehend aktiviert. Sobald ich C: \ Python2.6 \ verlasse, wird es wieder zu Version 2.5
Bilal Basharat
3
@ Bilal Basharat: Ich habe das bereits beantwortet. Es ist nicht "vorübergehend aktiviert". Sie haben Python 2.6 mit dem Befehl C: \ Python2.6 \ Python.exe ausgeführt, und so führen Sie es aus. Und Sie führen Python 2.5 mit dem Befehl C: \ Python2.5 \ Python.exe aus. So führen Sie beide gleichzeitig aus.
Lennart Regebro
1
@Bilal Basharat: Wenn entweder das Verzeichnis C:\Python2.5oder C:\Python2.6in Ihrer PATHUmgebungsvariablen angezeigt wird, wird die entsprechende Version von Python zum Standard, es sei denn, Sie überschreiben sie, indem Sie explizit einen anderen Pfad zur EXE-Datei angeben , die Sie verwenden möchten.
Martineau
7

Ich kann das pyenv-win- Projekt nur empfehlen .

Geben Sie hier die Bildbeschreibung ein

Dank kirankotari ‚s Arbeit, jetzt haben wir eine Windows - Version von pyenv.

Xin Lv
quelle
5

Hier ist ein kurzer Hack:

  1. Wechseln Sie in das Verzeichnis der Python-Version, die Sie ausführen möchten
  2. Klicken Sie mit der rechten Maustaste auf python.exe
  3. Wählen Sie "Verknüpfung erstellen ".
  4. Geben Sie dieser Verknüpfung einen Namen, unter dem Sie anrufen können (ich verwende p27, p33 usw.).
  5. Verschieben Sie diese Verknüpfung in Ihr Home-Verzeichnis ( C:\Users\Your name)
  6. Öffnen Sie eine Eingabeaufforderung und geben Sie ein name_of_your_shortcut.lnk(ich benutze p27.lnk)
David Greydanus
quelle
1

cp c: \ python27 \ bin \ python.exe als python2.7.exe

cp c: \ python34 \ bin \ python.exe als python3.4.exe

Sie befinden sich alle im Systempfad. Wählen Sie die Version aus, die Sie ausführen möchten

C:\Users\username>python2.7
Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>>

C:\Users\username>python3.4
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
Bruceyang
quelle
das hat bei mir funktioniert. Sie müssen nur copy anstelle von cp verwenden. Wenn Sie diesen Befehl ausführen, müssen Sie sich irgendwo im Pfad befinden und beide Python-Installationen, z. B. c: \ python34 \ bin \ python.exe und c: \ python27 \ bin \ python.exe, müssen sich ebenfalls im Pfad befinden. (vorzugsweise in dieser Reihenfolge).
Gregor Schmitz
1

Verwenden einer Batch-Datei zum Wechseln, einfach und effizient unter Windows 7. Ich verwende Folgendes:

Im Dialogfeld "Umgebungsvariable" (C: \ Windows \ System32 \ SystemPropertiesAdvanced.exe)

Im Abschnitt Benutzervariablen

  1. % pathpython% zur Pfadumgebungsvariablen hinzugefügt

  2. Verweise auf Python-Pfade wurden entfernt

Im Abschnitt Systemvariablen

  1. Verweise auf Python-Pfade wurden entfernt

Ich habe Batch-Dateien für jede Python-Installation erstellt (Beispiel für 3.4 x64

Name = SetPathPython34x64 !!! ToExecuteAsAdmin.bat ;-) nur um sich zu erinnern.

Inhalt der Datei =

     Set PathPython=C:\Python36AMD64\Scripts\;C:\Python36AMD64\;C:\Tcl\bin

     setx PathPython %PathPython%

Um zwischen Versionen zu wechseln, führe ich die Batchdatei im Admin-Modus aus.

!!!!! Die Änderungen werden für die Eingabeaufforderungsfenster SUBSEQUENT OPENED wirksam. !!!

Ich habe also die genaue Kontrolle darüber.

Ein Mann
quelle
0

Der einfachste Weg, mehrere Versionen von Python unter Windows auszuführen, wird im Folgenden wie folgt beschrieben: -

1) Laden Sie die neuesten Versionen von Python von python.org/downloads herunter, indem Sie die entsprechende Version für Ihr System auswählen.

2) Führen Sie das Installationsprogramm aus und wählen Sie Python 3.x zum Pfad hinzufügen, um den Pfad in Python 3 automatisch festzulegen (Sie müssen nur das Kontrollkästchen aktivieren). Für Python 2 offen up Installer Ihre Python 2, wählen , was auch immer Vorlieben Sie wollen , aber nur zu Satz erinnern Add python.exe auf Weg zu Wird auf der lokalen Festplatte installiert , nun direkt neben klicken und für den Installateur bis zum Ende warten.

3) Wenn beide Installationen abgeschlossen sind. Rechtsklick auf meinem Computer - Gehen Sie zu Eigenschaften - Erweiterte Systemeinstellungen wählen - Zum Umgebungsvariablen - Klicken Sie auf Neues unter Systemvariablen und fügen Sie eine neue Systemvariable mit Variablennamen als PY_PYTHON und setzen Sie diese Variable Wert auf 3 . Klicken Sie nun auf OK und Sie sollten fertig sein.

4) Um dies zu testen, öffnen Sie die Eingabeaufforderung . Sobald Sie dort Art sind Python oder py , sollten Sie eröffnen python3 .

5) Beenden Sie nun python3, indem Sie exit () eingeben . Geben Sie nun py -2 ein , um Python 2 zu öffnen.

Wenn nichts davon funktioniert, starten Sie den Computer neu. Wenn das Problem weiterhin besteht, deinstallieren Sie alles und wiederholen Sie die Schritte.

Vielen Dank.

Harsh Singh
quelle
0

In Anaconda Navigator können Sie verschiedene Python-Entwicklungsumgebungen grafisch erstellen. Ich hatte das gleiche Problem bei der Arbeit mit verschiedenen Python-Versionen, daher habe ich mit anaconda navigator verschiedene Python-Entwicklungsumgebungen erstellt und in jeder Umgebung unterschiedliche Python-Versionen verwendet.

Hier ist die Hilfedokumentation dazu.

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

Mohitesachin217
quelle
-1

Mit dem Rapid Environment Editor können Sie das Verzeichnis der gewünschten Python-Installation nach oben verschieben. Um beispielsweise Python aus dem Verzeichnis c: \ Python27 zu starten, stellen Sie sicher, dass sich das Verzeichnis c: \ Python27 vor oder über dem Verzeichnis c: \ Python36 in der Umgebungsvariablen Path befindet. Nach meiner Erfahrung wird die erste ausführbare Python-Datei in der Path-Umgebung ausgeführt. Zum Beispiel habe ich MSYS2 mit Python27 installiert und da ich C: \ MSYS2 zum Pfad vor C: \ Python36 hinzugefügt habe, wird die Datei python.exe aus dem Ordner C: \ MSYS2 .... ausgeführt.

Bogdan Oliver Stochin
quelle
-4

Rufen Sie einfach die richtige ausführbare Datei auf

albertov
quelle
Zur Zeit arbeite ich an 2.5. Erarbeiten Sie mich einfach, wie ich auch 2.6 ausführen kann. In der Windows-Eingabeaufforderung musste ich 'Python' schreiben, um die Python-Shell aufzurufen. und es ist 2,5. in c Laufwerk hatte ich beide Versionen installiert.
Bilal Basharat
Anstatt pythondie Shell zu betreten, versuchen Sie es python2.5oder python2.6. Ich bin kein Windows-Benutzer, aber unter Unix / usr / bin / python ist normalerweise ein Alias ​​für die vollqualifizierte ausführbare Datei. Ich gehe davon aus, dass Python in Windows auf ähnliche Weise installiert wird
Albertov
1
Unter Windows lautet der Name der ausführbaren Datei immer python.exe, aber Sie ändern den Pfad zur ausführbaren Datei. Es wurde jedoch schon mehrmals erklärt.
jgritty