Windows besteht darauf, .py-Dateien mit der falschen Version von Python zu verknüpfen

7

Ich habe sowohl Python 2.7 als auch Python 3.3 auf meinem Computer installiert (ich bin unter Windows 8).

Ich möchte, dass .py-Dateien standardmäßig mit Python 3.3 geöffnet werden. Der einzige Python-Pfad in der Umgebungsvariablen PATH ist der 3.3-Pfad. Beim Öffnen von .py-Dateien sehe ich jedoch, dass sie von Python 2.7 interpretiert werden, auch wenn ich sie explizit mit der Python 3.3-Exe öffne ("Öffnen mit" und Auswahl der 3.3-Exe). Ich habe auch versucht, die Python.exe-Version mithilfe von "Set Associations" in der Windows-Systemsteuerung zu ändern. Ich bin nicht sicher, ob es etwas geändert hat. Egal was ich mache, die Ausgabe des folgenden Programms ist 2.7.3:

import sys
print(sys.version)

Wie zwinge ich Windows 8, .py-Dateien mit Python 3.3 zu öffnen?

Snakile
quelle
Wie öffnest du sie? Durch Doppelklick? Werden sie sofort in einem Konsolenfenster ausgeführt oder von IDE (dh IDLE) abgeholt?
@ J0HN: Ich öffne sie durch Doppelklick und sie werden mit einem Konsolenfenster geöffnet. Ich habe auch versucht, mit der rechten Maustaste zu klicken und mit der Version 3.3 "Öffnen mit" zu wählen.
Snakile
Starten Sie den interaktiven Interpreter, indem Sie nur pythonin die Konsole eingeben und dann den Code aus der Frage ausführen. Wenn immer noch 2.7.3 ausgegeben wird, zeigt Ihr Pfad auf den falschen Python-Interpreter. Oder, noch besser, geben Sie einfach die python -VKonsole ein
@ J0HN: Danke, beide Vorschläge funktionieren und geben 3.3 wie gewünscht aus. Aber selbst wenn ich die .py-Datei mit der Windows-Befehlszeilen-Shell starte, wird 2.7 ausgegeben.
Snakile
Ich habe Python seit Jahren nicht mehr in Windows verwendet, aber überprüfe diese env-Variablen: %PATH%, %PYTHONPATH%. Schauen Sie sich msconfigund autoexec.bat an.
Fredrik Pihl

Antworten:

2

Das Ändern von shebang ( #! python3) kann Ihnen helfen, aber Sie haben ein Problem: Wenn Ihr Python-Skript Parameter enthält, werden diese beim Ausführen des Befehls abgeschnitten

somepythonfile.py your_parameters

Sie werden py.exe nur mit "somepythonfile.py" und KEINEN Parametern zum Laufen bringen, glauben Sie mir.

Die Methode, die für mich funktioniert hat, ist die folgende: Führen Sie die App http://www.nirsoft.net/utils/file_types_manager.html aus - dies ist ein Dateizuordnungsmanager. Korrigieren Sie die Zuordnung für Python-Dateien

"C:\Windows\py.exe" "%1" %*

anstatt

"C:\Windows\py.exe" "%1"

Oder alternativ einstellen

"C:\Python34\pythonw.exe" "%1" %*

explizit - um der gewünschten Version zu entsprechen und die Shebang-Zeile wegzulassen.

Ihor B.
quelle
nirsoft-Tools sind äußerst praktisch, um die globale Windows-Inkompetenz auszugleichen und einfache Mechanismen bereitzustellen. Siehe auch "nircmd" vom selben Autor.
Jean-François Fabre
1

Versuchen Sie, #!python3in die allererste Zeile einzufügen. Python 3.3 führte Python Launcher für Windows ein , das .pymit assoziiert ist c:\windows\py.exe. Standardmäßig wird das höchste Python 2 gestartet. Siehe https://stackoverflow.com/a/17245543/1346705

pepr
quelle
1

Es scheint, dass Windows nicht den gesamten Pfad der ausführbaren Datei überprüft! Versuchen Sie, die python.exe von Version 2 (bzw. 3) in einen temporären Namen umzubenennen. Dann assoziieren Sie mit diesem Namen. Und alles zurück ändern.

Zu Ihrer Information können Sie die Dateizuordnung überprüfen mit:

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

C:\Users\shadowed>ftype Python.File
Python.File="C:\Python27\python.exe" "%1" %*
Enthusiast
quelle
Dies ist die einfachste Lösung und sollte wahrscheinlich die akzeptierte Antwort sein
user2682863
0

Wenn Sie den beim Klicken mit der rechten Maustaste verwendeten IDLE ändern möchten, können Sie in die Registrierung gehen und den Schlüssel suchen:

HKEY_CLASSES_ROOT\Python.File\shell\Edit with IDLE\command

Sie sollten etwas sehen wie:

"C:\Python27\pythonw.exe" "C:\Python27\Lib\idlelib\idle.pyw" -e "%1"

Ändern Sie alle 27in, 33wenn Sie Ihre Pythons im Standardbereich installiert haben. Wenn nicht, ändern Sie einfach den Pfad zu dem Speicherort Ihrer 3.3-Implementierung.

Um das Standard-Befehlszeilen-Python zu ändern, sollten Sie dasselbe mit dem Pfad in Ihrer PATHUmgebungsvariablen tun .

Serdalis
quelle
0

Haben Sie versucht, Python 2.7 vorübergehend zu deinstallieren? Das könnte die Dateizuordnung beheben. Ich bin mir nicht sicher, da ich mit Windows 8 nicht vertraut bin, abgesehen davon, wie wenig ich davon erfahren habe, als ich es auf einem anderen Computer ausprobiert habe. Ich bin mir nicht mal sicher, ob es unter Windows 7 funktionieren würde, aber es ist einen Versuch wert, wenn Sie mich fragen.

Ich empfehle außerdem, das Tag für die von Ihnen verwendete Windows-Version anstelle des Standard-Tags "Windows" zu verwenden. In diesem Fall kann ich beides verwenden, da sich die Dateizuordnungen zwischen Windows-Versionen nicht wesentlich ändern. Verwenden Sie auf jeden Fall mindestens das richtige Tag (Windows-8). Dann erhalten Sie weitere Antworten von Personen, die nach diesem Tag suchen.

Verdrehter Code
quelle