使用"用IDLE编辑"与Python 2.6.5脚本

2 投票
2 回答
1955 浏览
提问于 2025-04-17 18:42

我在Windows上安装了Python的两个版本,分别是2.7.1和2.6.5。我在环境变量里只添加了Python 2.6.5的路径。现在,我想用Python 2.6.5来运行一个叫做x.py的脚本。我知道怎么通过cmd来运行这个脚本,但如果能直接用IDLE打开它并通过Run Module选项来运行就更方便了。 通常情况下,我可以右键点击这个脚本,然后选择Edit with IDLE,但这样做会用Python 2.7.1来打开和运行这个脚本。请问有没有办法用Python 2.6.5来打开和运行它呢?

2 个回答

1

你可以通过一些注册表的修改,把IDLE 2.6设置成默认的版本(而不是2.7),但我觉得这并不是你真正想要的,因为这样的话,当你想在2.7中测试东西时,就得再反向操作一次。除非有人知道其他方法可以把不同的IDLE安装整合到命令行中,不然这里有几个更好的选择:

  1. 先打开IDLE 2.6,然后直接通过图形界面的“打开文件”对话框来操作。

  2. 使用一个支持这种功能的其他IDE。比如说,Eclipse配合PyDev,可以让你在运行时切换解释器,或者保存不同解释器的配置等等。

4

在注册表中,Edit with IDLE的标准命令如下:

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

现在,你可以看到,路径是写死在里面的,所以它就不能像那样使用其他的Python解释器——至少默认情况下是这样。

不过,PEP 397引入了一个新的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或者你想要的其他版本。

撰写回答