如何在Windows 7上同时运行Python 2和3?

45

有没有一种方法可以在不破坏任何内容的情况下,将Python 3安装在Python 2的安装上面?主要问题是我有一些通过“python xxxxx.py abc123”来运行的代码。是否有一种方法可以将Python 3更改为“python3 xxxx.py abc123”?相同的命令python存在冲突。


当然可以,因为“安装Python”只是提取一堆文件夹。只需运行安装程序,您就会在C驱动器中拥有python26和python32文件夹。关于命令,每次想要使用其他命令时,您都需要对环境变量进行一些调整,因此可能需要一个简短的bash脚本来修改路径。 - Jainathan Leung
也许这个链接可以帮助:http://j.mp/ZfKVrb - dnelson
1
从Python 3.3开始,不需要进行任何调整。 - pepr
重复的问题比较旧,因此答案也不同。 - pepr
4个回答

96

在Windows上,有一种更好的方式来共存/启动Python 2和Python 3。Python 3.3引入了Python launcher for Windows(请参见http://www.python.org/dev/peps/pep-0397/)。

安装Python 3.3后,py.exepyw.exe会被复制到您的c:\Windows目录中,并为.py扩展名设置关联以使用启动器。默认情况下,用py script.py启动Python 2。py -3 script.py则启动Python 3。(这也意味着不需要将Python路径添加到环境变量中--C:\Windows已经在PATH中。)

最好的是,脚本中的#!python2会导致通过Python 2启动,#!python3会导致通过Python 3启动。这样,您可以同时使用两个版本的Python脚本,并且可以以统一的方式启动它们--py script.py或只需单击脚本图标。

还有更多细节,但基本上这就是你需要的。

更新:使用Python launcher for Windows时,您还可以通过在cmd窗口中输入> script.py来启动Python脚本(即在脚本名字前不需要明确地输入py--Python launcher的名称--)或者甚至只需输入没有.py扩展名的名称(即只需> script)。

这样,事情开始类似于Unix命名脚本的方式(无需扩展名);但是,在创建脚本文件时仍然必须添加.py扩展名。

(是的,它比Unix的方法有点更加混乱。这就是操作系统开发中“先思考!”和“先销售!”方法之间的区别。无论如何,我要向Python开发团队致敬,他们通过发布Windows版本的Python启动器,充分利用了Windows的优势。)


8
我没有看到任何 py.exe 或 pyw.exe。但是当我启动 Python 时,我得到了以下错误信息:"致命的 Python 错误: Py_Initialize: 无法加载文件系统编解码器 File "C:\Python27\lib\encodings_init_.py", line 123 raise CodecRegistryError,
^ SyntaxError: invalid syntax"。这意味着 Python3 正试图启动 Python2 的内容。
- CMCDragonkai
实际上,py.exe在C:\Python33中。但是,如果我尝试启动py -3,我会得到与上面相同的错误。 - CMCDragonkai
@CMCDragonkai:我无法确认。我刚刚卸载了我电脑上所有的Python版本,包括C:\PythonXX(带有site packages等),也物理删除了C:\Windows\py.exe和pyw.exe。然后我下载并安装了http://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi(未将py.exe添加到C:\Windows),然后是http://www.python.org/ftp/python/3.3.2/python-3.3.2.amd64.msi--py.exe和pyw.exe被添加到C:\Windows。你用的是哪个版本的Windows? - pepr
5
+1,非常好的描述,谢谢。不幸的是,这个问题应该是在Google搜索中首先出现的问题,但实际上并没有。 - Sabuncu
5
从一个全新的 Windows 8.1 副本开始,我安装了 Python 2.7.9 和 Python 3.4.3(均使用默认选项)。Python 3 确实将 py.exe 和 pyw.exe 添加到 C:\Windows 中,并且一切都像 @pepr 描述的那样正常工作。谢谢! - Pakman
显示剩余3条评论

6

不确定它是否符合您的需求,但您应该看一下virtualenv:http://www.virtualenv.org/en/latest/

这将允许您创建Python 2和3的单独环境(使用-p标志)。如果您的用例是无法使用此方法的,请更新问题并提供更多具体信息,我相信您会得到其他建议。


2
假设您将Python3安装在另一个目录中,您也可以将Python 3可执行文件重命名为python3.exe。

2
重命名 .exe 会破坏 py -3 的使用,而这是由 @pepr 建议的。 - Kevin

0
你需要编辑你的环境变量,将你的Python 3或Python 2路径加入其中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接