我有与Python解释器相关联的.py
扩展名的文件。 但是,当我在命令行中键入这样的文件的名称,然后按ENTER
在默认文本编辑器(Notepad ++)中打开文件,而不是与关联的Python解释器运行。 为什么?
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
我在Windows Vista x64上使用Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
UPDATE
在删除HKEY_CLASSES_ROOT\Unknown\shell\notepad++\command
键(我在过去创build了这个键,用于将文件没有扩展名与Notepad ++联系起来 – 请参阅如何设置打开文件的默认程序, C:\Program Files (x86)\Notepad++\notepad++ %1
我得到这个错误:
该文件没有与其关联的程序来执行此操作。 在“设置关联”控制面板中创build关联。
更新2
要显示系统正常使用的所有registry项,以查明哪个程序与.py
扩展名关联,请运行以下batch file( python_assoc.query.bat
):
@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.
我也运行进程监视器(感谢Maximus ),以查看从命令行运行a.py
时正在读取哪些registry项。 我设置了filter,只包含用于运行a.py
文件的cmd.exe
pid,并排除RegCloseKey
types的操作。
"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"
一般来说,我会确保关联没有被当前用户的设置覆盖:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\UserChoice
HKCU\Software\Classes\.py
HKCU\Software\Classes\Python.File
但是,当我在更新中读取进程监视器输出时,看起来没有任何这些HKCU
密钥在您的系统上定义。
我的下一步是在高架cmd
控制台中运行以下内容:
> assoc .PY=Python.File > ftype Python.File=c:\Program Files\Python\2.7\python.exe "%1" %*
据我所知,这在HKLM\Software\Classes
设置了系统关联, HKLM\Software\Classes
别无其他。 根据你的问题中的信息,似乎这已经正确设置。 所以我不知道assoc
或ftype
做什么来解决这个问题。
可能这可能有帮助(使“打开”作为默认动词)?
[HKEY_CLASSES_ROOT\Python.File\shell] @="open"
或者这个(考虑python.exe
路径的配额)?
[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\" %*"
我一直在努力解决这个问题,和Piotr一样。 eriksyn的建议使我成为一个工作系统。
由于记事本2总是打开我的“我想要运行这个”调用,它必须是我有东西关联所有文件与记事本2,现在我知道在哪里看(我以前运行过程监视器,但输出体积太大)。
我在我的注册表中使用HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
中的Notepad2内容。 我假设记事本2自己添加这些,或者我配置的东西时做了这个。 尤其是:
> reg query HKCU\Software\...\Explorer\FileExts\.py\UserChoice HKEY_CURRENT_USER\Software\...\Explorer\FileExts\.py\UserChoice Progid REG_SZ Applications\Notepad2.exe
使用此注册表项和值,尝试运行Python脚本只是打开Notepad2。
没有这个注册表项,我的Python脚本实际上执行,不再需要我输入“python <script>”来运行它们。
我很高兴。 谢谢,堆栈溢出。
你不能只用GUI的方式吗?
“打开…” – >浏览 – > python.exe并勾选“始终使用此程序…”