老广东草包卷 2025-05-11 12:41 采纳率: 80%
浏览 13
已结题

python文件尤其是pyw文件的右键“Edit with IDLE”失效

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崩溃),不好删除其中任何一个而且看起来很烦人。

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-05-11 12:41
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解决方案

    Python 文件尤其是 pyw 文件的右键 "Edit with IDLE" 失效的问题可能是由于注册表中的某个键值对的错误或缺失导致的。

    根据你的描述,问题的根源在计算机\HKEY_CLASSES_ROOT\Python.File\Sh 中。可以尝试以下解决方案:

    1. 打开注册表编辑器,找到计算机\HKEY_CLASSES_ROOT\Python.File\Sh 键。
    2. 在 Sh 键下,检查是否存在 "Edit" 子键,如果不存在,可以创建一个新的 "Edit" 子键。
    3. 在 "Edit" 子键下,检查是否存在 "UserChoice" 子键,如果不存在,可以创建一个新的 "UserChoice" 子键。
    4. 在 "UserChoice" 子键下,检查是否存在 "ProgId" 值,如果不存在,可以添加一个新的 "ProgId" 值,值为 "Python.IDLE"。
    5. 保存注册表更改。

    如果以上步骤不能解决问题,可以尝试重新安装 IDLE 或者 Python。

    代码

    无需代码。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月11日
  • 创建了问题 5月11日