python - 将 "Edit with IDLE"与 Python 2.6.5 脚本结合使用

标签 python python-idle

我在 Windows 上安装了 Python 2.7.1 和 2.6.5 版本。我在环境变量中只添加了Python 2.6.5的路径。 现在,我想使用 Python 2.6.5 运行 Python 脚本 x.py。我知道如何使用 cmd 执行此操作,但使用 IDLE 打开它并使用 Run Module 选项在其中运行会更方便。 据称,这是通过右键单击脚本,然后转到 Edit with IDLE 选项来完成的,但这会使用 Python 2.7.1 打开并运行脚本。有没有办法用Python 2.6.5打开并运行它?

最佳答案

注册表中使用 IDLE 编辑的标准命令如下:

"C:\Program Files\Python33\pythonw.exe" "C:\Program Files\Python33\Lib\idlelib\idle.pyw" -e "%1"

现在,正如您所看到的,路径被硬编码到其中,因此它不能使用这样的不同Python解释器——至少在默认情况下是这样。

但是,PEP 397为 Python 引入了一个新的 Python 启动器,使得基于 shebang 系列启动不同版本的 Python 成为可能。因此,以 #!/usr/bin/env python2 开头的文件将启动当前的 Python 2 解释器,而 #!/usr/bin/env python3 将使用 Python 3 .

使用该信息,您可以动态启动给定 Python 版本的 IDLE。例如,这将使用启动器的默认 Python 版本编辑文件:

 C:\Windows\pyw.exe -m idlelib.idle -e "%1"

这将强制使用 Python 3

 C:\Windows\pyw.exe -3 -m idlelib.idle -e "%1"

这将强制使用 Python 2:

 C:\Windows\pyw.exe -2 -m idlelib.idle -e "%1"

所以你需要做的是编写一个脚本,基本上检查文件想要执行的Python版本,即通过手动解析shebang行(遗憾的是启动器没有给你这些信息尚未实际启动脚本。我可能会启动拉取请求以将此类功能引入核心)。然后,您可以使用上面的命令运行 Python 2 或 Python 3 IDLE 并完成。

您只需要更改Edit with IDLE命令来执行脚本,然后它就会起作用。

一个非常简单的替代方案是添加另一个启动 Python 2 IDLE 的注册表项。因此,您将拥有 Edit with IDLEEdit with IDLE (Py2) 或其他内容。

为此,只需将以下内容放入 .reg 文件中并执行即可:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Python.File\shell\Edit with IDLE (Py2)]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Python.File\shell\Edit with IDLE (Py2)\command]
@="C:\\Windows\\pyw.exe -2 -m idlelib.idle -e \"%1\""

编辑:我刚刚注意到我写的这篇文章主要是关于 Python 2 与 Python 3 的;我认为启动器附带了 Python 2.7,所以它的工作原理是一样的。您只需将启动器的版本说明调整为 -2.6-2.7 或您想要的任何内容。

关于python - 将 "Edit with IDLE"与 Python 2.6.5 脚本结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15343138/

相关文章:

python - 消息: The browser appears to have exited before we could connect.

python - 如何使用 {single key :multi values} 创建 HTTP 请求数据

Python:json.loads 在转义时阻塞

python - pip 成功安装后 : ModuleNotFoundError

python - 使用 Python IDLE 时如何从备用位置导入模块?

python - 我如何仅选择/格式化字典中的值到列表或 numpy 数组中?

python - IDLE (Python 3.4) - 在启动时执行脚本

python - 如何在 IDLE 中给 Python 程序添加断点?

silverlight - 空闲状态检测 Silverlight 4 应用

python - 如何使用 Python 在 AWS lambda 中设置环境变量