2

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

4

2 回答 2

4

注册表中的标准命令Edit with 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/或任何您想要的。

于 2013-03-11T16:26:12.673 回答
1

您可以通过一些注册表黑客来做到这一点,使 IDLE 2.6 成为您的默认值(而不是 2.7),但这并不是您真正想要的,我认为,从那时起,当您想在 2.7 中测试某些东西时,您必须反转该过程。除非其他人知道将不同的 IDLE 安装集成到 shell 中的其他方法,否则这里有几个更好的选择:

  1. 首先打开 IDLE 2.6,然后使用 GUI 中的 Open File 对话框。

  2. 使用实际支持此功能的其他 IDE。带有PyDev的Eclipse将允许您在运行之间切换解释器,或者使用不同的解释器保存配置,等等。

于 2013-03-11T16:06:32.647 回答