Wie soll ich die Standard-Python-Version in Windows festlegen?

74

Ich habe Python 2.6und Python 3.1unter Windows 7 installiert und Umgebungsvariable gesetzt : path = d:\python2.6.

Wenn ich laufe pythonin cmd, zeigt es die Python - Version 2.6, das ist , was ich will!
Als ich jedoch ein Skript in eine Bat-Datei schrieb und es ausführte, war die angezeigte Python-Version 3.1.

    import sys
    print (sys.version)

Was ist hier los?

Rooney
quelle
Python-Code in einer .bat-Datei wird von Python nicht interpretiert, stattdessen versucht cmd.exe, ihn zu interpretieren, was nicht funktioniert. Fügen Sie den Python-Code in eine .py-Datei und dann in die .bat-Datei ein python scriptfile.py.
Martineau
Trotzdem danke! Ich finde den richtigen Weg, ich ändere den Wert des Registrierungselements in HKEY_LOCAL_CLASS \ Applications \ Python.exe \ shell \ open \ command , und dann funktioniert es richtig für bat file
rooney

Antworten:

74

Dies ist der Fall, wenn Sie beide Versionen installiert haben.

Gehe zu This PC -> Right-click -> Click on Properties -> Advanced System Settings.

Sie werden das sehen System Properties. Von hier aus navigieren Sie zur "Advanced"Registerkarte -> Klicken Sie auf Environment Variables.

Sie sehen eine obere Hälfte für die Benutzervariablen und die untere Hälfte für System variables.

Aktivieren Sie das System Variablesund doppelklicken Sie auf Path(um den Pfad zu bearbeiten).

Suchen Sie nach dem Pfad von Python (den Sie ausführen möchten, z. B. Python 2.x oder 3.x), und verschieben Sie ihn an den Anfang der Pfadliste.

Starten Sie die Eingabeaufforderung neu. Wenn Sie nun die Version von Python überprüfen, sollte die erforderliche Version korrekt angezeigt werden.

Aditya Deshpande
quelle
3
Dies ist eine großartige und einfache Lösung. Hält alle Ihre Python-Speicherorte (z. B. Versionen 2.7, 3.7 usw.) auf dem Pfad. Vielen Dank!
Justincohler
5
Stellen Sie sicher, dass Sie auch den Skript-Teil des Pfads erhalten: C: \ Python27; C: \ Python27 \ Scripts \;
Eliteproxy
Ein Detail, auf das Sie hier achten sollten: Wenn Sie während der benutzerdefinierten Installation nicht "Für alle Benutzer installieren" angekreuzt haben (oder nicht als Administrator installiert haben), wird Python in% LOCALAPPDATA% \ Programs \ Python installiert und dem hinzugefügt PFAD in Ihren Benutzerumgebungsvariablen . Wenn der andere Python als Administrator / für alle Benutzer installiert wurde, wird er in C: \ Programme \ gespeichert und in den Systemumgebungsvariablen zu PATH hinzugefügt . Normalerweise überschreiben Benutzerumgebungsvariablen Systemvariablen, aber PATH ist immer (System PATH + Benutzer PATH). Das ist es, was mich gerade gestolpert hat, also dachte ich, ich würde es hier notieren.
Ryan Plant
65

Das letzte Python, das Sie installieren und das sich in der Umgebung registriert, ist die Standardeinstellung (ich kann mich nicht an den genauen Wortlaut im Installationsprogramm erinnern, aber es ist die erste Option). Es gibt eine Reihe von Einstellungen. Um sicherzustellen, dass alle konsistent registriert sind, installieren Sie einfach die Version neu, die Sie als Standard verwenden möchten.

Wenn Sie eine andere Version installieren möchten, diese aber nicht als Standardversion verwenden möchten, deaktivieren Sie einfach die Registrierungsoption während der Installation.

Bearbeiten (19. Mai 2012)

Ab Python 3.3 installiert das Python-Installationsprogramm Python Launcher für Windows . Dieses Programm ( py.exe) ist den Python-Dateierweiterungen zugeordnet und sucht nach einem "shebang" -Kommentar, um die auszuführende Python-Version anzugeben. Auf diese Weise können viele Versionen von Python nebeneinander existieren und Python-Skripte können bei Bedarf explizit angeben, welche Version verwendet werden soll. Wenn dies nicht angegeben ist, wird standardmäßig die neueste Python 2.X-Version für die aktuelle Architektur (x86 oder x64) verwendet. Diese Standardeinstellung kann über eine py.iniDatei oder eine PY_PYTHONUmgebungsvariable angepasst werden. Weitere Informationen finden Sie in den Dokumenten .

Stellen Sie einfach sicher, dass Python 3.3 das letzte installierte Python ist, das sich bei Windows registriert hat. Wenn andere Versionen von Python später installiert werden, registrieren Sie sie nicht in der Umgebung, damit der Launcher die Standardeinstellung bleibt.

So überprüfen Sie, ob der Launcher über die Konsole korrekt registriert ist:

C:\>assoc .py
.py=Python.File

C:\>ftype Python.File
Python.File="C:\Windows\py.exe" "%1" %*

Oben sind .pyDateien dem Python.FileTyp zugeordnet. Die Befehlszeile für Python.Fileist der Python Launcher, der im Windows-Verzeichnis installiert ist, da er sich immer im PATH befindet.

Damit die Zuordnung funktioniert, führen Sie Skripte über die Befehlszeile mit script.pynicht "python script.py" aus, andernfalls pythonwird stattdessen ausgeführt py. py.exekann auch mit Schaltern ausgeführt werden, um eine Python-Version zu erzwingen:

py -3 script.py    # force latest Python 3.X version to be used.

Fügen Sie außerdem .py;.pyw;.pyc;.pyoder PATHEXTUmgebungsvariablen hinzu, und die Befehlszeile kann einfach scriptohne Erweiterung sein.

Mark Tolonen
quelle
+1 Ich würde zwar hoffen, dass es einen besseren Weg gibt, aber das hat bei mir funktioniert. Vielen Dank.
Westsider
1
Anstatt die gewünschte Version von Python als Standard neu zu installieren, hat sie den gleichen Effekt, wenn Sie sie über die Systemsteuerung zum Hinzufügen / Entfernen von Programmen reparieren.
Giles Smith
Dieser Rat ist falsch. Python 2.7.5 hat so etwas nicht gemacht, als ich es gerade installiert habe. Ich musste meinen PFAD nur manuell ändern.
Tom W
1
Im Nachhinein war der Ton nicht wirklich angemessen, also entschuldige ich mich - ich möchte meinen Kommentar ändern, was ich anscheinend nicht kann - obwohl der Punkt von StackOverflow hilfreich sein soll, denke ich, dass es angemessen ist weisen darauf hin, dass das Verhalten nicht mehr dasselbe zu sein scheint.
Tom W
1
py -3.8und py -3.8-32startet 64- bzw. 32-Bit-Python.
Cees Timmerman
63

Wenn Sie den Befehl 'py' ausführen, erfahren Sie, welche Version ausgeführt wird. Wenn Sie derzeit 3.x ausführen und zu 2.x wechseln müssen, müssen Sie den Schalter '-2' verwenden.

py -2

Wenn Sie von Python 2.x zu Python 3.x wechseln müssen, müssen Sie den Schalter '-3' verwenden

py -3

Wenn Sie Python 3.x als Standardversion haben möchten, müssen Sie die Umgebungsvariable 'PY_PYTHON' erstellen und ihren Wert auf 3 setzen.

Vlad Bezden
quelle
3
Dieser ist sehr nützlich, es ist nicht erforderlich, Registrierungsschlüssel zu bearbeiten ... wenn Sie Python 2-Skripte in der Befehlszeile py -2 test.pypython test.py
ausführen
1
Dies ist die beste Antwort. Einfachheit ist am besten
yapws87
PY_PYTHON hat nicht funktioniert. Das Entfernen des Python-Pfads (unerwünschte Version) aus der PATH-Variablen hat bei mir funktioniert.
Naveen Kumar
14

Siehe hier für den Originalbeitrag

;
; This is an example of how a Python Launcher .ini file is structured.
; If you want to use it, copy it to py.ini and make your changes there,
; after removing this header comment.
; This file will be removed on launcher uninstallation and overwritten
; when the launcher is installed or upgraded, so don't edit this file
; as your changes will be lost.
;
[defaults]
; Uncomment out the following line to have Python 3 be the default.
;python=3

[commands]
; Put in any customised commands you want here, in the format
; that's shown in the example line. You only need quotes around the
; executable if the path has spaces in it.
;
; You can then use e.g. #!myprog as your shebang line in scripts, and
; the launcher would invoke e.g.
;
; "c:\Program Files\MyCustom.exe" -a -b -c myscript.py
;
;myprog="c:\Program Files\MyCustom.exe" -a -b -c

Daher habe ich auf meinem System eine py.iniDatei c:\windows\mit dem folgenden Inhalt erstellt, unter der py.exe vorhanden ist:

[defaults]
python=3

Wenn Sie jetzt auf eine .py-Datei doppelklicken, wird sie von der neuen Standardversion ausgeführt. Jetzt verwende ich den Shebang nur noch #! python2für meine alten Skripte.

Ehsan Iran-Nejad
quelle
9
  1. Registrierungsschlüssel bearbeiten HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\python.exe\default
  2. Stellen Sie das Standardprogramm zum Öffnen von .pyDateien einpython.exe
Kabel
quelle
9

Wenn Sie ein Windows-Benutzer sind und eine Version von Python 3.3 oder höher haben, sollten Sie den Python Launcher für Windows haben auf Ihrem Computer installiert sein. Dies ist die empfohlene Methode zum Starten aller Python-Skripte (unabhängig von der für das Skript erforderlichen Python-Version) ).

Als Benutzer

  • Geben Sie immer pystatt ein, pythonwenn Sie ein Skript über die Befehlszeile ausführen.

  • Richten Sie die Standardprogrammzuordnung Ihres Explorers "Öffnen mit ..." ein C:\Windows\py.exe

  • Legen Sie die Zuordnung der Befehlszeilendateierweiterung für die Verwendung des Python Launcher für Windows fest (dadurch wird die Eingabe pyoptional):

    ftype Python.File="C:\windows\py.exe" "%L" %*

    ftype Python.NoConFile="C:\Windows\pyw.exe" "%L" %*

  • Legen Sie Ihre bevorzugte Standardversion fest, indem Sie die PY_PYTHONUmgebungsvariable festlegen (z PY_PYTHON=3.7). B. können Sie durch Eingabe sehen, welche Python-Version Ihre Standardversion ist py. Sie können auch Standardversionen für Python 3 und Python 2 festlegen PY_PYTHON3oder PY_PYTHON2angeben (wenn Sie mehrere haben).

  • Wenn Sie eine bestimmte Python-Version ausführen müssen, können Sie diese verwenden py -M.m(wobei Mdie Hauptversion und mdie Nebenversion ist). Führt beispielsweise py -3eine installierte Version von Python 3 aus.

  • Listen Sie die installierten Versionen von Python mit auf py -0.

Als Drehbuchautor

  • Fügen Sie oben in Ihrem Skript eine Shebang-Zeile ein, die die Hauptversionsnummer von Python angibt. Wenn das Skript mit keiner anderen Nebenversion kompatibel ist, geben Sie auch die Nebenversionsnummer an. Zum Beispiel:

    #!/usr/bin/env python3

  • Sie können die Shebang-Linie auch verwenden, um eine virtuelle Umgebung anzuzeigen (siehe PEP 486 unten).


Siehe auch

Casey Kuball
quelle
8

Wenn Sie wissen, welche Environment variablesSystemvariable aufgerufen wird path, sollten Sie berücksichtigen, dass jede Version einer Binärdatei, die früher verfügbar ist , standardmäßig verwendet wird.

Schauen Sie sich das Bild unten an, ich habe 3 verschiedene Python-Versionen, aber Python 3.8wird standardmäßig verwendet, da es früher als die beiden anderen kam. (Bei erwähntem Bild bedeutet früher höher!)

Geben Sie hier die Bildbeschreibung ein

AmiNadimi
quelle
4

Das hat bei mir funktioniert:

Gehe zu

Control Panel\System and Security\System

wählen

Advanced system settings from the left panel
from Advanced tab click on Environment Variables

Suchen Sie im Abschnitt Systemvariablen nach ( erstellen, wenn nicht vorhanden )

PYTHONPATH

und setzen

C:\Python27\;C:\Python27\Scripts;

oder Ihre gewünschte Version

Sie müssen CMD neu starten.

Falls es immer noch nicht funktioniert, möchten Sie möglicherweise nur die gewünschte Version in der PATH-Variablen belassen.

George B.
quelle
3

Diese Arbeit für mich.

Wenn Sie Python 3.6 verwenden möchten, müssen Sie Python 3.6 oben in der Liste verschieben.

Gleiches gilt für Python2.7. Wenn Sie 2.7 als Standard haben möchten, stellen Sie sicher, dass Sie Python2.7 ganz oben in der Liste verschieben.

Schritt 1

Geben Sie hier die Bildbeschreibung ein

Schritt 2

Geben Sie hier die Bildbeschreibung ein

Schritt 3

Geben Sie hier die Bildbeschreibung ein

Schließen Sie dann eine beliebige cmd-Eingabeaufforderung und öffnen Sie sie erneut. Sie sollte wie erwartet funktionieren.

Python - Version

>>> Python 3.6
George C.
quelle
1
Oraios @ George C.
Datacrawler
2

Nach der Veröffentlichung von Python 3.3 ist es am einfachsten, das hier beschriebene Dienstprogramm py.exe zu verwenden: http://www.python.org/dev/peps/pep-0397/

Sie können eine Python-Version in Ihrer Skriptdatei mithilfe einer UNIX-Direktive angeben. Es gibt auch Befehlszeilen- und Umgebungsvariablenoptionen zum Steuern, welche Version von Python ausgeführt wird.

Der einfachste Weg, um dieses Dienstprogramm zu erhalten, ist die Installation von Python 3.3 oder höher.

Gerald
quelle
2

Nichts oben hat funktioniert, das hat bei mir funktioniert:

ftype Python.File=C:\Path\to\python.exe "%1" %*

Dieser Befehl sollte an der als Administrator gestarteten Eingabeaufforderung ausgeführt werden

Warnung: Selbst wenn der Pfad in diesem Befehl auf python35 festgelegt ist, wird bei Installation von python36 die Standardeinstellung auf python36 festgelegt. Um dies zu verhindern, können Sie den Ordnernamen vorübergehend von ändernPython36 zu xxPython36dem folgenden Befehl ausführen und dann die Änderung der 36 Ordner Python entfernen.

MagTun
quelle
Dies ändert nichts am Verhalten, wenn pythones an der Eingabeaufforderung aufgerufen wird.
cat40
Dies wird funktionieren, wenn wir Python nur mit seinem Namen ausführen
Smart Manoj
2

Überprüfen Sie, welches System derzeit verwendet wird:

python --version

Fügen Sie den Umgebungsvariablen des Systems den Hauptordner (z. B. C / ProgramFiles) und den Skriptspeicherort (C / ProgramFiles / Scripts) hinzu. Fügen Sie sowohl die 3.x-Version als auch die 2.x-Version hinzu

Die Pfadposition wird innerhalb der Umgebungsvariablen eingestuft. Wenn Sie Python 2.x verwenden möchten, setzen Sie einfach den Pfad von Python 2.x an die erste Stelle. Wenn Sie für Python 3.x möchten, setzen Sie einfach 3.x an die erste Stelle

Dies verwendet Python 2

pranavhd
quelle
1

Verwenden Sie den SETBefehl in Windows CMD, um vorübergehend die Standardpython für die aktuelle Sitzung festzulegen.

SET PATH=C:\Program Files\Python 3.5
ron4ex
quelle
-3

Versuchen Sie, den Pfad in der Windows-Registrierung zu ändern (HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment).

Vorsichtsmaßnahme: Brechen Sie nicht die Registrierung :)

Phooji
quelle
Ich habe die Umgebungsvariable bereits richtig eingestellt, für meine Frage funktioniert sie nicht in der Fledermausdatei
Rooney
2
Trotzdem danke! Ich finde den richtigen Weg, ich ändere den Wert des Registrierungselements in HKEY_LOCAL_CLASS \ Applications \ Python.exe \ shell \ open \ command , und dann funktioniert es richtig für bat file
rooney