python文件尤其是pyw文件的右键“Edit with IDLE”失效
经过注册表编辑器一步步定位,我最终锁定到问题的根源在
计算机\HKEY_CLASSES_ROOT\Python.File\Shell\editwithidle\shell\edit312\command
上。
通过将command中的值
"C:\Program Files\Python312\pythonw.exe" -m idlelib "%L" %*
替换为
"C:\Program Files\Python312\pythonw.exe" "C:\Program Files\Python312\Lib\idlelib\idle.pyw" "%1"
问题似乎得到了缓解,但这不是问题的关键之处。
我发现了更棘手的问题:现在右键能打开py文件了,但pyw依然没有任何反应。
我首先认为可能是python的源文件出了问题。首先,"%1"提供的是目标文件的地址。因此,我将"%1"替换为了一个pyw文件的地址,然后在cmd上运行它。
"C:\Program Files\Python312\pythonw.exe" "C:\Program Files\Python312\Lib\idlelib\idle.pyw" "_address.pyw"
更加令我疑惑的事情发生了:这段代码竟然在cmd上可以执行,并通过IDLE打开了目标pyw文件。
但同样是这一段代码:
"C:\Program Files\Python312\pythonw.exe" "C:\Program Files\Python312\Lib\idlelib\idle.pyw" "%1"
为什么在cmd上运行的可以正常用IDLE打开pyw文件,而注册表键值中的却丝毫没有反应(右键能打开py文件,却唯独打不开pyw文件)?
/
/
/
/
注:我也尝试了在
计算机\HKEY_CLASSES_ROOT\SystemFileAssociations
中添加.py和.pyw项并添加用IDLE打开的代码。可以实现。但这毕竟是缓兵之计,而且这样做会产生两个Edit with IDLE(一个是Python.File项的,一个是SystemFileAssociations项的,我担心删除任何一个项都会使Python崩溃),不好删除其中任何一个而且看起来很烦人。