如何在Windows上运行多个Python版本


170

我在计算机上安装了两个版本的Python(版本2.6和2.5)。我想为一个项目运行2.6,为另一个项目运行2.5。

如何指定我要使用哪个?

我正在使用Windows XP SP2。


3
提出问题的好提示是解释您尝试过的方法以及失败的方式。那么:您尝试了什么,并且以什么方式行不通?
Lennart Regebro

注意,我在Windows上找不到关于此的任何以前的问题,因此我更改了标题以反映这一点。
Lennart Regebro


如果你想运行2.7沿3.3,那么这是最标准的答案: - stackoverflow.com/questions/15912063/...
奥马尔·塔里克

Answers:


135

运行不同的Python副本就像启动正确的可执行文件一样容易。您提到您已经从命令行通过简单输入以下内容启动了python实例:python

这在Windows下的作用是拖曳%PATH%环境变量,检查可执行文件,无论是批处理文件(.bat),命令文件(.cmd)还是其他要运行的可执行文件(由可执行文件控制PATHEXT环境变量)是否与给定名称匹配。当找到正确的文件来运行时,该文件正在运行。

现在,如果您已经安装了两个Python版本2.5和2.6,则路径中将同时包含它们的两个目录,例如 PATH=c:\python\2.5;c:\python\2.6但是Windows将在找到匹配项时停止检查该路径。

您真正需要做的是显式调用一个或两个应用程序,例如c:\python\2.5\python.exec:\python\2.6\python.exe

另一种选择是创建一个快捷方式,以分别python.exe调用其中一个python25和另一个python26;然后python25,您只需在命令行上运行即可。


41
如何创建快捷方式
Bilal Basharat 2011年

8
在Windows中时,导航到包含要为其创建快捷方式的python版本的文件夹,然后右键单击并创建快捷方式。然后可以重命名。
2011年

3
抱歉,我找到了一个很长的死信,但是如何在不使用.lnk扩展名的情况下使快捷方式起作用?
内森·托奎斯特

7
如果快捷方式不起作用,则可以按照@FJ的说明进行操作,只需复制并重命名即可。如果失败,则可以在命令行上使用“ mklink”进行符号链接。
2011年

7
最好的方法不是创建一个名为python25和python26的蝙蝠文件并使它们调用适当的版本吗?然后,您需要做的就是将这2个bat文件放在其二进制文件旁边。
杰里米·坎特雷尔2013年

100

为该问题添加了两个解决方案:

  • 使用pylauncher(如果您使用的是Python 3.3或更高版本,则无需安装它,因为它已经随Python一起提供了),然后在脚本中添加shebang行;

#! c:\[path to Python 2.5]\python.exe-适用于要与Python 2.5一起运行
#! c:\[path to Python 2.6]\python.exe的脚本-适用于要与Python 2.6一起运行的脚本

或者代替运行python命令run pylauncher command(py)指定要使用哪个版本的Python;或者

py -2.6–版本2.6
py -2–最新安装的版本2.x
py -3.4–版本3.4
py -3–最新安装的版本3.x

virtualenv -p c:\[path to Python 2.5]\python.exe [path where you want to have virtualenv using Python 2.5 created]\[name of virtualenv]

virtualenv -p c:\[path to Python 2.6]\python.exe [path where you want to have virtualenv using Python 2.6 created]\[name of virtualenv]

例如

virtualenv -p c:\python2.5\python.exe c:\venvs\2.5

virtualenv -p c:\python2.6\python.exe c:\venvs\2.6

那么您可以激活第一个并像这样使用Python 2.5,
c:\venvs\2.5\activate
并且当您想切换到Python 2.6时,

deactivate  
c:\venvs\2.6\activate

pylauncher似乎是PEP 397的原型实现,早在2011年就被接受为Standards Track。您知道为什么启动器仍然没有随Windows一起分发Python还是为什么只有Vinay Sajip的原型实现吗?
martineau 2013年

4
从3.3版开始,Pylauncher随Python一起分发-参见python.org/download/releases/3.3.0。我也认为Vinay Sajip的实现不仅仅是实现原型。
Piotr Dobrogost

1
谢谢你的澄清。IMHO pylauncher也应作为最新Python 2版本的一部分进行分发,因为使用该版本的用户更可能希望安装多个版本(如果他们知道其功能和可用性,则很可能这样做)。
martineau

StackOverflow应该允许多个投票,您的答案值得无限投票!说真的,你去哪儿了!:D简单,清晰,正常工作!
3bdalla 2015年

很好的建议。我用了第二个(virtualenv)。我发现的唯一区别是,我必须在激活路径中包含“ \ scripts”,例如:c:\venvs\2.5\scripts\activate。如果有帮助,请在Windows 10上使用。除此之外,谢谢。
戴夫·马利

53

从Python 3.3开始,有适用于Windows的官方Python启动器http://www.python.org/dev/peps/pep-0397/)。现在,您也可以#!pythonX在Windows上使用来确定所需的解释器版本。在我的其他评论中查看更多详细信息或阅读PEP 397。

总结:py script.pyPython的版本中规定发布#!,如果或Python 2 #!缺失。该py -3 script.py运行Python 3。


1
这是我正在寻找的答案。我使用Python 2.7和Python 3.4.3运行Windows 10。在命令提示符下,键入“ py [python_version_number]”,例如:py -3或py将调用您拥有的python版本。我认为在使用此变量之前必须先设置环境变量。这对我来说很方便。
CodeMonkey

2
@Inuka:不需要设置环境变量。Python安装程序会设置与.py扩展名的关联。启动器本身已安装C:\Windows在中PATH。这样,PATH变量也无需修改。
pepr

2
非常感谢您的回答伴侣。通过这种方式,我们也可以调用pip。py -2 -m pip install SomePackage或py -3.4.3 -m pip install SomePackage
CodeMonkey

我认为这是最简单,没有麻烦的解决方案。
普拉萨德

46

按照@alexander,您可以建立如下的符号链接集。将它们放在您的路径中包含的某个位置,以便可以轻松调用它们

> cd c:\bin
> mklink python25.exe c:\python25\python.exe
> mklink python26.exe c:\python26\python.exe

只要您将c:\ bin或您放置在其中的任何位置都在路径中,现在就可以

> python25

4
聪明的主意。BTW mklink仅在Windows Vista / 2008 +中本地可用。在XP和Server 2003上,可以创建“硬链接”,而不是使用fsutil hardlink create <new filename> <existing filename><new filename>并将其放置或移动到路径中的某个位置。但是,硬链接只能在同一驱动器上工作。
martineau

这是一个很好的解决方案,我不确定在没有基于NTFS的文件系统的情况下也无法正常工作。
meawoppl 2014年

是的,需要支持我相信是在Vista中引入的NTFS符号链接(我可能错了)。在XP上使用需要使用其他驱动程序。听起来好像在正式发布前的某个阶段被关闭了。
Christopher Hackett

最简单的最佳解决方案
Giantas

15
  1. 安装python

    • C:\ Python27
    • C:\ Python36
  2. 环境变量

    • PYTHON2_HOME: C:\Python27
    • PYTHON3_HOME: C:\Python36
    • Path: %PYTHON2_HOME%;%PYTHON2_HOME%\Scripts;%PYTHON3_HOME%;%PYTHON3_HOME%\Scripts;
  3. 文件重命名

    • C:\ Python27 \ python.exe→C:\ Python27 \ python2.exe
    • C:\ Python36 \ python.exe→C:\ Python36 \ python3.exe
  4. 点子

    • python2 -m pip install package
    • python3 -m pip install package

我认为,这或多或少是这个问题的实际解决方案。与使用快捷方式/符号链接调用python脚本的方法相比,此方法更方便。无需重命名文件,我们可以复制并粘贴二进制文件(python.exe),然后根据其版本进行重命名(如本答案所示)。顺便说一下, python命令会使操作系统感到困惑。
testuser的

好答案!谢谢〜@山茶树和葡萄树
Bright Chang

14

例如对于3.6版本类型py -3.6。如果您同时具有32位和64位版本,则只需键入py -3.6-64或即可py -3.6-32


3
这应该是公认的答案!万分感谢!
Xonshiz

3
这可能是最好的答案,因为它不需要重命名文件,并且第三方IDE会正常检测到两者!
Enchant97 '19

您能否通过更多解释来增强答案-该py可执行文件在哪里-它是Windows的唯一补充吗?是否可以将其合并到位于顶部的跨平台命令行脚本中#!/usr/bin/env python3?例如?
Ed Randall

7

当您安装Python时,它不会覆盖其他主要版本的其他安装。因此,安装Python 2.5.x不会覆盖Python 2.6.x,尽管安装2.6.6会覆盖2.6.5。

因此,您只需安装它即可。然后,调用所需的Python版本。例如:

C:\Python2.5\Python.exe

适用于Windows上的Python 2.5和

C:\Python2.6\Python.exe

适用于Windows上的Python 2.6,或

/usr/local/bin/python-2.5

要么

/usr/local/bin/python-2.6

Windows Unix(包括Linux和OS X)上。

在Unix(包括Linux和OS X)上python安装时,将安装通用命令,这是最后安装的命令。大多数情况下这不是问题,因为大多数脚本会显式调用/usr/local/bin/python2.5或一些用于防止这种情况的文件。但是,如果您不想这样做,并且您可能不想这样做,可以这样安装:

./configure
make
sudo make altinstall

请注意,“ altinstall”表示它将安装它,但不会代替python命令。

python据我所知,在Windows上您没有得到全局命令,所以这不是问题。


感谢您的帮助plz还回答了我的第二个问题:如何一次运行两个?当我成功从2.5切换到2.6时
Bilal Basharat 2011年

@Bilal Basharat:Windows是一个多任务操作系统,如果您想同时运行两件事情,则只能同时启动两者,所以我不明白您的问题。
Lennart Regebro

目前,我正在研究python2.5。简单地说明我如何也可以运行2.6?当我在Windows命令提示符下输入“ python”以输入python shell时,会出现python2.5。在C盘我安装了两个版本。当我转到C:\ Python2.6 \ Python.exe时。比python2.6暂时激活。我离开C:\ Python2.6 \后,它再次变成了2.5版
Bilal Basharat 2011年

3
@Bilal Basharat:我已经回答了。它不是“临时激活”的。使用命令C:\ Python2.6 \ Python.exe运行Python 2.6,这就是运行它的方式。然后使用命令C:\ Python2.5 \ Python.exe运行Python 2.5。这就是您同时运行两者的方式。
Lennart Regebro

1
@Bilal Basharat:如果环境变量中出现C:\Python2.5or C:\Python2.6目录PATH,则相应的Python版本将成为默认版本,除非您通过显式指定要使用的.exe的其他路径来覆盖它,否则它将变为默认版本。
martineau 2011年


5

这是一个快速的技巧:

  1. 转到您要运行的python版本的目录
  2. 右键点击python.exe
  3. 选择“ 创建快捷方式
  4. 给该快捷方式起个呼叫的名字(我使用p27,p33等)
  5. 将该快捷方式移至您的主目录(C:\Users\Your name
  6. 打开命令提示符并输入name_of_your_shortcut.lnk(我使用p27.lnk

1

cp c:\ python27 \ bin \ python.exe作为python2.7.exe

cp c:\ python34 \ bin \ python.exe作为python3.4.exe

它们都在系统路径中,请选择要运行的版本

C:\Users\username>python2.7
Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>>

C:\Users\username>python3.4
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

这对我有用。只需使用copy而不是cp。另外,在运行此命令时,您必须位于路径中,并且两个python安装程序(例如c:\ python34 \ bin \ python.exe和c:\ python27 \ bin \ python.exe)也都必须位于路径中。(最好按此顺序)。
Gregor Schmitz

1

使用批处理文件进行切换,在Windows 7上轻松高效。我使用以下命令:

在环境变量对话框(C:\ Windows \ System32 \ SystemPropertiesAdvanced.exe)中,

在用户变量部分

  1. 在路径环境变量中添加了%pathpython%

  2. 删除了对python路径的任何引用

在系统变量部分

  1. 删除了对python路径的任何引用

我为每个python安装创建了批处理文件(例如3.4 x64

名称= SetPathPython34x64 !!! ToExecuteAsAdmin.bat ;-)只是为了记住。

文件内容=

     Set PathPython=C:\Python36AMD64\Scripts\;C:\Python36AMD64\;C:\Tcl\bin

     setx PathPython %PathPython%

要在版本之间切换,我在admin模式下执行批处理文件。

!!!!! 该更改对SUBSEQUENT命令提示符窗口OPENED有效。!!!

因此,我对此有完全的控制权。


0

在Windows上运行多个版本的python的最简单方法如下所述:

1)从python.org/downloads下载最新版本的python通过选择系统的相关版本,。

2)运行安装程序,然后选择将python 3.x添加到路径中以在python 3中自动设置路径(您只需单击复选框)。对于python 2,请打开python 2安装程序,选择所需的任何首选项,但只需记住将Add python.exe设置为路径将其安装在本地硬盘上,现在只需单击下一步,然后等待安装程序完成即可。

3)两个安装都完成后。右键单击我的计算机-转到属性-选择高级系统设置-转到环境变量-单击系统变量下的新建,然后添加一个新的系统变量,其变量名称PY_PYTHON并将此变量值设置为3。现在单击确定,您应该完成。

4)现在要对此进行测试,请打开命令提示符。一旦进入pythonpy,它应该打开python3

5)现在通过键入exit()退出 python3 。现在输入py -2应该会打开python 2。

如果这些都不起作用,请重新启动计算机,如果问题仍然存在,请卸载所有组件并重复步骤。

谢谢。



-1

使用Rapid Environment Editor, 您可以将所需的Python安装目录推到顶部。例如,要从c:\ Python27目录启动python,请确保c:\ Python27目录在Path环境变量中的c:\ Python36目录之前或之上。根据我的经验,正在执行Path环境中找到的第一个python可执行文件。例如,我已经在Python27上安装了MSYS2,并且由于我已经将C:\ MSYS2添加到C:\ Python36之前的路径中,因此正在执行C:\ MSYS2 ....文件夹中的python.exe。


-4

只需调用正确的可执行文件


目前我正在研究2.5。简单地向我详细说明如何也可以运行2.6。在Windows命令提示符下,我必须编写“ python”才能进入python shell。它是2.5。在C盘我安装了两个版本。
Bilal Basharat 2011年

python尝试输入python2.5或而不是进入外壳python2.6。我不是Windows用户,但在unix / usr / bin / python上通常是完全限定的可执行文件的别名,我假设Windows中的python以类似的方式安装
albertov 2011年

1
在Windows上,可执行文件的名称始终为python.exe,但是您将路径更改为可执行文件。尽管已经对其进行了多次解释。
jgritty 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.