2012-11-10 11 views
5

Ich habe Dateien mit .py Erweiterung mit Python-Interpreter verbunden. Wenn ich jedoch den Namen einer solchen Datei in die Befehlszeile eintippe und ENTER drücke, wird die Datei im Standard-Texteditor (Notepad ++) geöffnet, anstatt mit dem zugehörigen Python-Interpreter ausgeführt zu werden. Warum?Das Ausführen von Python-Skript über die Befehlszeile öffnet das Skript im Standard-Texteditor anstelle des Skripts

Z:\1>where python 
c:\Program Files\Python\2.7\python.exe 

Z:\1>reg query HKCR\.py /ve 

HKEY_CLASSES_ROOT\.py 
    (Default) REG_SZ Python.File 


Z:\1>reg query HKCR\Python.File\shell\open\command /ve 

HKEY_CLASSES_ROOT\Python.File\shell\open\command 
    (Default) REG_SZ c:\Program Files\Python\2.7\python.exe "%1" %* 


Z:\1>echo %PATHEXT% 
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW 

Z:\1>type a.py 
from __future__ import print_function; import sys; print(sys.executable); print(sys.version) 
Z:\1>a.py <--- this opens a.py in the default text editor 

Ich bin auf Windows Vista x64 mit Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32

UPDATE

Nach dem Löschen HKEY_CLASSES_ROOT\Unknown\shell\notepad++\command Schlüssel (ich diesen Schlüssel in der Vergangenheit in meiner Suche erstellten Dateien mit Notepad ohne Erweiterung zu assoziieren ++ - siehe How to set the default program for opening files without an extension in Windows?), den Wert C:\Program Files (x86)\Notepad++\notepad++ %1 hatte bekomme ich diesen Fehler:

This file does not have a program associated with it for performing this action. Create an association in the Set Associations control panel.

UPDATE 2

Um alle Registrierungsschlüssel angezeigt werden normalerweise durch das System verwendet, um herauszufinden, welches Programm mit .py Erweiterung zugeordnet ist, ich die folgende Batchdatei (python_assoc.query.bat) laufen:

@echo off 
if "%~1" == "details" (
    set keypath=HKLM\Software\Classes 
    echo ----- HKEY_LOCAL_MACHINE ----- 
    call :query 
    set keypath=HKCU\Software\Classes 
    echo. 
    echo ----- HKEY_CURRENT_USER ----- 
    call :query 
) else (
    set keypath=HKCR 
    echo ----- HKEY_CLASSES_ROOT ----- 
    call :query 
) 
goto end 

:query 
reg query %keypath%\.py /ve 
reg query %keypath%\.pyw /ve 
reg query %keypath%\.pyc /ve 
reg query %keypath%\.pyo /ve 

reg query %keypath%\Python.File\shell\open\command /ve 
reg query %keypath%\Python.NoConFile\shell\open\command /ve 
reg query %keypath%\Python.CompiledFile\shell\open\command /ve 
goto :eof 

:end 
set keypath= 

OUTPUT

Z:\1>python_assoc.query.bat details 
----- HKEY_LOCAL_MACHINE ----- 

HKEY_LOCAL_MACHINE\Software\Classes\.py 
    (Default) REG_SZ Python.File 
HKEY_LOCAL_MACHINE\Software\Classes\.pyw 
    (Default) REG_SZ Python.NoConFile 
HKEY_LOCAL_MACHINE\Software\Classes\.pyc 
    (Default) REG_SZ Python.CompiledFile 
HKEY_LOCAL_MACHINE\Software\Classes\.pyo 
    (Default) REG_SZ Python.CompiledFile 
HKEY_LOCAL_MACHINE\Software\Classes\Python.File\shell\open\command 
    (Default) REG_SZ c:\Program Files\Python\2.7\python.exe "%1" %* 
HKEY_LOCAL_MACHINE\Software\Classes\Python.NoConFile\shell\open\command 
    (Default) REG_SZ c:\Program Files\Python\2.7\pythonw.exe "%1" %* 
HKEY_LOCAL_MACHINE\Software\Classes\Python.CompiledFile\shell\open\command 
    (Default) REG_SZ c:\Program Files\Python\2.7\python.exe "%1" %* 

----- HKEY_CURRENT_USER ----- 
ERROR: The system was unable to find the specified registry key or value. 
ERROR: The system was unable to find the specified registry key or value. 
ERROR: The system was unable to find the specified registry key or value. 
ERROR: The system was unable to find the specified registry key or value. 
ERROR: The system was unable to find the specified registry key or value. 
ERROR: The system was unable to find the specified registry key or value. 
ERROR: The system was unable to find the specified registry key or value. 

ich auch Führen Sie Process Monitor (danke Maximus), um zu sehen, welche Registrierungsschlüssel beim Ausführen von a.py von der Befehlszeile gelesen werden. Ich habe Filter eingestellt, um nur pid von cmd.exe einzuschließen, das benutzt wird, um a.py Akte laufen zu lassen und Betriebe des Typs RegCloseKey auszuschließen.

"Operation","Path","Result","Detail" 
"RegOpenKey","HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers","NAME NOT FOUND","Desired Access: Query Value" 
"RegOpenKey","HKLM\SOFTWARE\Microsoft\WINDOWS NT\CURRENTVERSION\AppCompatFlags\Custom\a.py","NAME NOT FOUND","Desired Access: Query Value" 
"RegOpenKey","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer","SUCCESS","Desired Access: Query Value" 
"RegQueryValue","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MaximizeApps","NAME NOT FOUND","Length: 144" 
"RegOpenKey","HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer","SUCCESS","Desired Access: Query Value" 
"RegQueryValue","HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\MaximizeApps","NAME NOT FOUND","Length: 144" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\Drive\shellex\FolderExtensions","NAME NOT FOUND","Desired Access: Enumerate Sub Keys" 
"RegOpenKey","HKCR\Drive\shellex\FolderExtensions","SUCCESS","Desired Access: Enumerate Sub Keys" 
"RegQueryKey","HKCR\Drive\shellex\FolderExtensions","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\Drive\shellex\FolderExtensions","NAME NOT FOUND","Desired Access: Maximum Allowed" 
"RegEnumKey","HKCR\Drive\shellex\FolderExtensions","SUCCESS","Index: 0, Name: {fbeb8a05-beee-4442-804e-409d6c4515e9}" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\Drive\shellex\FolderExtensions\{fbeb8a05-beee-4442-804e-409d6c4515e9}","NAME NOT FOUND","Desired Access: Query Value" 
"RegOpenKey","HKCR\Drive\shellex\FolderExtensions\{fbeb8a05-beee-4442-804e-409d6c4515e9}","SUCCESS","Desired Access: Query Value" 
"RegQueryKey","HKCR\Drive\shellex\FolderExtensions\{fbeb8a05-beee-4442-804e-409d6c4515e9}","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\Drive\shellex\FolderExtensions\{fbeb8a05-beee-4442-804e-409d6c4515e9}","NAME NOT FOUND","Desired Access: Maximum Allowed" 
"RegQueryValue","HKCR\Drive\shellex\FolderExtensions\{fbeb8a05-beee-4442-804e-409d6c4515e9}\DriveMask","SUCCESS","Type: REG_DWORD, Length: 4, Data: 32" 
"RegEnumKey","HKCR\Drive\shellex\FolderExtensions","NO MORE ENTRIES","Index: 1, Length: 288" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Query Value" 
"RegOpenKey","HKCR\.py","SUCCESS","Desired Access: Query Value" 
"RegQueryKey","HKCR\.py","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Maximum Allowed" 
"RegQueryValue","HKCR\.py\(Default)","SUCCESS","Type: REG_SZ, Length: 26, Data: Python.File " 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\.py\OpenWithProgids","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\.py\OpenWithProgids","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids","SUCCESS","Desired Access: Read" 
"RegQueryKey","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids","SUCCESS","Query: Cached, SubKeys: 0, Values: 2" 
"RegEnumValue","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids","SUCCESS","Index: 0, Length: 220" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\Python.File","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\Python.File","SUCCESS","Desired Access: Read" 
"RegEnumValue","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids","SUCCESS","Index: 1, Length: 220" 
"RegEnumValue","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids","NO MORE ENTRIES","Index: 2, Length: 220" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\.py","SUCCESS","Desired Access: Read" 
"RegOpenKey","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py","SUCCESS","Desired Access: Read" 
"RegOpenKey","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py","SUCCESS","Desired Access: Read" 
"RegOpenKey","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\UserChoice","NAME NOT FOUND","Desired Access: Query Value" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\Python.File ","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\Python.File ","NAME NOT FOUND","Desired Access: Read" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\.py","SUCCESS","Desired Access: Read" 
"RegQueryKey","HKCR\.py","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\.py\shell","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\.py\shell","NAME NOT FOUND","Desired Access: Read" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\.py","SUCCESS","Desired Access: Read" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\Unknown","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\Unknown","NAME NOT FOUND","Desired Access: Read" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\SystemFileAssociations\.py","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\SystemFileAssociations\.py","NAME NOT FOUND","Desired Access: Read" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Query Value" 
"RegOpenKey","HKCR\.py","SUCCESS","Desired Access: Query Value" 
"RegQueryKey","HKCR\.py","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Maximum Allowed" 
"RegQueryValue","HKCR\.py\PerceivedType","NAME NOT FOUND","Length: 144" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\SystemFileAssociations\.py","NAME NOT FOUND","Desired Access: Query Value" 
"RegOpenKey","HKCR\SystemFileAssociations\.py","NAME NOT FOUND","Desired Access: Query Value" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\*","SUCCESS","Desired Access: Read" 
"RegQueryKey","HKCU\Software\Classes\*","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\*\shell","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\*\shell","SUCCESS","Desired Access: Read" 
"RegQueryKey","HKCR\*\shell","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\*\shell","NAME NOT FOUND","Desired Access: Maximum Allowed" 
"RegQueryValue","HKCR\*\shell\(Default)","NAME NOT FOUND","Length: 144" 
"RegQueryKey","HKCR\*\shell","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\*\shell\open","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\*\shell\open","NAME NOT FOUND","Desired Access: Read" 
"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\AllFilesystemObjects","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\AllFilesystemObjects","SUCCESS","Desired Access: Read" 
"RegQueryKey","HKCR\AllFilesystemObjects","SUCCESS","Query: Name" 
"RegOpenKey","HKCU\Software\Classes\AllFilesystemObjects\shell","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCR\AllFilesystemObjects\shell","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKLM\Software\Microsoft\Windows\CurrentVersion\SideBySide","SUCCESS","Desired Access: Read" 
"RegQueryValue","HKLM\COMPONENTS\PreferExternalManifest","NAME NOT FOUND","Length: 20" 
"RegOpenKey","HKLM\Software\Microsoft\Windows\CurrentVersion\SideBySide\AssemblyStorageRoots","REPARSE","Desired Access: Enumerate Sub Keys" 
"RegOpenKey","HKLM\COMPONENTS\AssemblyStorageRoots","NAME NOT FOUND","Desired Access: Enumerate Sub Keys" 
"RegOpenKey","HKLM\Software\Microsoft\DirectUI","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKLM\Software\Microsoft\CTF\TIP\{0000897b-83df-4b96-be07-0fb58b01c4a4}\LanguageProfile\0x00000000\{0001bea3-ed56-483d-a2e2-aeae25577436}","SUCCESS","Desired Access: Read" 
"RegQueryValue","HKLM\SOFTWARE\Microsoft\CTF\TIP\{0000897b-83df-4b96-be07-0fb58b01c4a4}\LanguageProfile\0x00000000\{0001bea3-ed56-483d-a2e2-aeae25577436}\Enable","SUCCESS","Type: REG_DWORD, Length: 4, Data: 1" 
"RegOpenKey","HKCU","SUCCESS","Desired Access: Read" 
"RegOpenKey","HKCU\Keyboard Layout\Toggle","SUCCESS","Desired Access: Read" 
"RegQueryValue","HKCU\Keyboard Layout\Toggle\Language Hotkey","SUCCESS","Type: REG_SZ, Length: 4, Data: 3" 
"RegQueryValue","HKCU\Keyboard Layout\Toggle\Layout Hotkey","SUCCESS","Type: REG_SZ, Length: 4, Data: 3" 
"RegOpenKey","HKCU","SUCCESS","Desired Access: Read" 
"RegOpenKey","HKCU\SOFTWARE\Microsoft\CTF\LangBarAddIn","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKLM\SOFTWARE\Microsoft\CTF\LangBarAddIn","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKCU","SUCCESS","Desired Access: Read" 
"RegOpenKey","HKCU\Software\Microsoft\CTF\DirectSwitchHotkeys","SUCCESS","Desired Access: Read" 
"RegEnumKey","HKCU\Software\Microsoft\CTF\DirectSwitchHotkeys","NO MORE ENTRIES","Index: 0, Length: 288" 
"RegOpenKey","HKLM\SOFTWARE\Microsoft\CTF\KnownClasses","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKLM\SOFTWARE\Microsoft\CTF\KnownClasses","NAME NOT FOUND","Desired Access: Read" 
"RegOpenKey","HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes","SUCCESS","Desired Access: Read" 
"RegQueryValue","HKLM\SOFTWARE\Microsoft\WINDOWS NT\CURRENTVERSION\FontSubstitutes\Segoe UI","NAME NOT FOUND","Length: 144" 
"RegOpenKey","HKLM\SOFTWARE\Microsoft\CTF\KnownClasses","NAME NOT FOUND","Desired Access: Read" 
+1

mögliches Duplikat von [Making Python-Skripte laufen unter Windows ohne Angabe der Erweiterung ".py"] (http://stackoverflow.com/questions/9037346/making-python-scripts-run-onon-windows-without-specifying- py-extension) – bgporter

+0

@bgporter Es ist kein Duplikat dieser Frage. Ich spreche nicht über Python-Skript ausführen, ohne seine Erweiterung zu schreiben. –

+0

Überprüfen und erstellen Sie, falls erforderlich, Ihre Python-Datei [associations] (http://stackoverflow.com/a/5586761/355230). – martineau

Antwort

4

Im Allgemeinen würde ich der Verein sicher nicht von außer Kraft gesetzt werden Einstellungen für den aktuellen Benutzer:

  • HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\UserChoice
  • HKCU\Software\Classes\.py
  • HKCU\Software\Classes\Python.File

Wie ich jedoch die Process Monitor-Ausgabe in Ihrem Update gelesen habe, scheint es, dass keiner dieser HKCU Schlüssel auf Ihrem System definiert ist.

Mein nächster Schritt wäre die folgend in einer erhöhten cmd Konsole auszuführen:

> assoc .PY=Python.File 
> ftype Python.File=c:\Program Files\Python\2.7\python.exe "%1" %* 

Soweit ich weiß, dies setzt das System Verein in HKLM\Software\Classes und tut nichts anderes. Basierend auf den Informationen in Ihrer Frage scheint es, dass dies bereits korrekt eingestellt wurde. Also ich weiß nicht, was oder ftype tat, um das Problem zu beheben.

+0

Vielleicht hatte das Problem etwas mit 32bit/64bit * Mismatch * zu tun. Obwohl ich sicherstellte, dass "cmd.exe", das ich ausführte, 64bit war, wenn ich 'python' später ausführe, um seine genaue Version in meiner Frage zu melden, endete die Versionsinformation mit' on win32' text. Ich kann es jetzt nicht reproduzieren - es gibt kein 'on win32' Suffix mehr. Zusätzlich sehe ich, dass Registrierungsschlüssel, die mit dem 'ftype'-Befehl modifiziert wurden, auch' Wow6432Node'-Gegenstücke änderten. Vielleicht war etwas mit der 'Wow6432Node' Version von Registrierungsschlüsseln nicht in Ordnung und' ftype' hat dies behoben. Ich erinnere mich jedoch, dass 32-Bit-Tasten die gleichen waren wie 64-Bit-Tasten ... –

1

Kann dies helfen (machen "offen" als Standard-Verb)?

[HKEY_CLASSES_ROOT\Python.File\shell] 
@="open" 

oder diese (berücksichtigen Quoten um python.exe Pfad)?

[HKEY_CLASSES_ROOT\Python.File\shell\open] 
@="Open" 

[HKEY_CLASSES_ROOT\Python.File\shell\open\command] 
@="\"c:\\Program Files\\Python\\2.7\\python.exe\" \"%1\" %*" 
+0

Keine der oben genannten half. –

+0

Letzte Chance;) Führen Sie Process Monitor aus und versuchen Sie, 'a' in cmd auszuführen. Analysiere Protokoll, ich glaube, es kann dir einen Hinweis geben – Maximus

+0

Manuell python sagen, um mein Skript aus der Registrierung zu starten: "C: \ Python27 \ python.exe" "C: \ Python27 \ tpt.py" "% 1" ' – YumYumYum

-1

Kannst du nicht einfach die GUI-Methode?

„Öffnen mit ...“ -> Browse -> python.exe und tick „immer mit diesem Programm ...“

+0

Wenn ich Wählen Sie * Öffnen mit ... * Ich bekomme den gleichen Fehler wie in meinem Update angezeigt. Siehe [Wählen Sie das Standardprogramm-Dialogfeld wird nicht angezeigt, nachdem Sie Öffnen mit Eintrag im Kontextmenü gewählt haben] (http://superuser.com/questions/69193/) –

0

Ich habe seit einiger Zeit mit diesem Problem zu kämpfen, genau wie Piotr. Der Vorschlag von Eriksyn führte mich zu einem funktionierenden System.

Da Notepad2 immer meine "I-will-to-run-this" -Aufrufe geöffnet hat, muss ich etwas haben, das alle Dateien mit Notepad2 verknüpft, und jetzt wusste ich, wo ich suchen musste (Ich habe zuvor Process Monitor ausgeführt , aber die Ausgabe war zu umfangreich).

Ich habe .py Einträge mit Notepad2 Inhalt in HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts in meiner Registrierung. Ich nehme an, entweder Notepad2 hat diese selbst hinzugefügt, oder ich habe das irgendwie beim Konfigurieren der Dinge getan. Insbesondere:

Mit diesem Registrierungsschlüssel und -wert wird beim Versuch, ein Python-Skript auszuführen, Notepad2 geöffnet.

Ohne diesen Registrierungsschlüssel werden meine Python-Skripts tatsächlich ausgeführt und erfordern nicht mehr die Eingabe von "python < script>", um sie auszuführen.

Ich bin glücklich. Danke, Stapelüberlauf.