如何在Windows中同时安装Python 2.x和Python 3.x


230

我在Windows 7上使用Python 3.x进行大部分编程,但是现在我需要使用Python Imaging Library(PIL),ImageMagick和wxPython,所有这些都需要Python2.x。

我可以在Windows 7中同时安装Python 2.x和Python 3.x吗?运行脚本时,如何“选择”应该运行哪个版本的Python?前面提到的程序能否处理一次安装的多个版本的Python?我已经搜索了数小时,但无济于事。

谢谢。



2
是的,正如@NickT所说,这是最简单的。不幸的是,下面的答案都没有给出简单,直接的方法。(提到3.3版本的是最接近的版本。)要获得更好的答案,请参见重复的问题下被接受的问题:stackoverflow.com/a/17245543/1593924 简而言之,请使用新的“ py”启动器,无论是否带有-3参数。并考虑将shebangs(#!)添加到脚本中,这样就不需要参数。
乔恩·库姆斯

1
另外,有些人发现我在此处发布的详细信息对您有所帮助:stackoverflow.com/a/13533958/1593924
Jon Coombs 2014年

Answers:


150

我发现执行此操作的正式方法如下:

只需在Windows 7上安装两个(或多个,使用其安装程序)Python版本(对我来说,使用3.3和2.7)。

请遵循以下指示,根据需要更改参数。

创建以下环境变量(默认为双击):

Name:  PY_PYTHON
Value: 3

要在特定的解释器中启动脚本,请添加以下shebang(脚本开始):

#! python2

要使用特定的解释器执行脚本,请使用以下提示命令:

> py -2 MyScript.py

要启动特定的解释器:

> py -2

要启动默认解释器(由PY_PYTHON变量定义):

> py

资源资源

文档:在Windows上使用Python

PEP 397-适用于Windows的Python启动器


8
此外,要在两个版本中同时使用easy_installpip请将路径更改为include c:\python35;c:\python35\scripts;c:\python27\scripts;。这允许使用pip2/ pip3easy_install-2.7/ easy_install-3.5代替pipand easy_install
rdtsc

1
不会与各种程序一起使用,这些程序不会附带自己的Python并坚持使用系统版本,并且不会尊重启动器。
乔纳森·鲍德温

1
不,不要在路径中添加任何Python。使用py -m pip install ...。之后添加开关,py以选择要在上面运行pip的Python。
Mark Tolonen

75

我所做的是下载了2.7.6和3.3.4。Python 3.3.4可以选择在环境变量中添加路径。所以基本上我只是手动添加了Python 2.7.6。

如何...

  1. 开始>在环境中的搜索类型中,选择“将环境变量编辑到您的帐户” 1

  2. 向下滚动到路径,选择路径,然后单击编辑。

  3. 添加C:\ Python27; 因此,您应该在那里拥有两个版本的Python的路径,但是如果没有,则可以轻松地对其进行编辑,以便您执行..... C:\ Python27; C:\ Python33;

  4. 导航到C:\中的Python27文件夹,并将python.exe的副本重命名为python2.exe

  5. 导航到C:\中的Python34文件夹,并将python.exe的副本重命名为python3.exe

  6. 测试:打开命令提示符并输入python2 .... BOOM!Python 2.7.6。退出。

  7. 测试:打开命令提示符并输入python3 .... BOOM!Python 3.4.3。退出。

注意:(为了避免在第4步和第5步中破坏pip命令,请将python.exe的副本保留在与重命名文件相同的目录中)


43
这将同时破坏pip2和pip3!不要替换python,将其复制并将第二个文件重命名为python2 / python3。
brunofitas

1
请注意,在恢复名称之前,我无法卸载python。我的建议是制作副本并重命名它们,但不要保留原始python.exe文件,**也如bruno所述。
Logic1 2016年

2
您能否在答案中处理brunofitas反馈?
030

是的,我刚刚将Python3安装中的python.exe重命名为python3.exe。我认为这是在* nix环境中使用python自动发生的。当然没有.exe文件,但是有一个python2和python3程序。:)
user3870315 '19

如果您有依赖于任一版本python的库/插件,请确保该版本首先出现在PATH环境变量中
aphoe

51

我在Windows中有多个版本。我只是更改了非默认版本的exe名称。

python.exe-> python26.exe

pythonw.exe-> pythonw26.exe

至于软件包安装程序,大多数exe安装程序都允许您选择python安装来添加软件包。对于手动安装,请检查--prefix选项以定义软件包的安装位置:

http://docs.python.org/install/index.html#alternate-installation-windows-the-prefix-scheme


这工作了。在进行此更改之前,当我尝试在Python 2.7中运行程序时,它仍然在Python 3.1中运行(可能是因为Windows 7无法处理同名的两个不同程序)。如图所示重命名该exe后,一切进行顺利。
dln385

4
@ dln385:如果它回答了您的问题,则应通过单击复选标记来接受它。
dappawit 2011年

1
这也对我有用。我在Python 2.7和Python 3.2之间发生冲突。由于我先安装了Python 3.2(并适当地设置为环境变量),所以我无法在提示符下访问Python 2.7(而是获得了Python 3.2)。我想使用默认的Python 2.7,因此,我将python.exe更改为python3.2.exe,并保持了Python 2.7的python.exe不变。做到了。
罗伯·史密斯

我已经有一段时间没有在Windows上安装新的python3了,但是我的版本包括pip as pip3pip3.4。(它也将其包含为pip,但我认为删除应该可以解决与python2的任何冲突)。其实我没有C:\Python34\Scripts我的Path,所以我没有任何PIP相关的问题...
monkut

30

如果使用Anaconda Python,则可以轻松安装各种环境。

假设您已安装Anaconda Python 2.7,并且想要一个Python 3.4环境:

conda create -n py34 python=3.4 anaconda

然后激活环境:

activate py34

并停用:

deactivate py34

(对于Linux,您应该使用 source activate py34。)

链接:

下载Anaconda Python

环境说明


到目前为止,IMO conda是处理不同的Python安装的最佳方法。在搬到Anaconda之前,我搞砸了很多事情。
jrinker

11

要在同一系统中安装和运行任何版本的Python,请遵循以下指南。


例如,说您想在同一Windows系统上安装Python 2.x和Python3.x。

  1. 在需要的任何位置安装它们的两个二进制发行版。

    • 出现提示时,请勿注册其文件扩展名和
    • 不要将它们自动添加到PATH环境变量中
  2. 仅运行命令python,便会选择要在PATH中首次遇到的可执行文件进行启动。换句话说,手动添加Python目录。键入时,将选择第一个添加的对象python。像这样选择连续的python程序(将其目录放置在PATH中的顺序增加):

    • py -2第二 python
    • py -3表示第三个python等等。
  3. 无论“ pythons”的顺序如何,您都可以:

    • 使用以下命令运行Python 2.x脚本:py -2(Python 3.x功能)(即,将选择在PATH中找到的第一个Python 2.x安装程序)
    • 使用以下命令运行Python 3.x脚本:或py -3(即,将选择在PATH中找到的第一个Python 3.x安装程序)

在我的示例中,我先安装了Python 2.7.14,然后安装了Python 3.5.3。这是我的PATH变量以以下内容开头的方式:

PATH = C:\ Program Files \ Microsoft MPI \ Bin \; C:\ Python27; C:\ Program Files \ Python_3.6 \ Scripts \; C:\ Program Files \ Python_3.6 \; C:\ ProgramData \ Oracle \ Java \ javapath; C:\ Program Files(x86)\ Common Files \ Intel \ Shared

...

请注意,Python 2.7是第一位,Python 3.5是第二位。

  • 因此,运行python命令将启动python 2.7(如果使用Python 3.5,则同一命令将启动Python 3.5)。
  • Running py -2启动Python 2.7(因为第二个Python是不兼容的Python 3.5 py -2)。运行py -3启动Python 3.5(因为它是Python 3.x)
  • 如果您稍后在路径中使用另一个python,则会像这样启动:py -4。如果/当发布Python版本4时,这可能会更改。

现在py -4py -5等在我的系统上输出:Requested Python version (4) not installedRequested Python version (5) not installed等。

希望这已经足够清楚了。


您如何在一个Python发行版中指定pip安装?
维克多·马丁内斯

对于找到的第一个python,只需键入pip。对于安装的任何其他python,您必须手动指定路径,即。C:\Python27\Scripts\pip.py [parameters]。(当然,作为一种快捷方式,您可以将所需的任何exe放在环境变量中。)
Nikos

@ Nik-Lz您指的是什么“ py -2”命令?我似乎不具备这些在我的Windows 7
亚诺什

2
如果有多个版本,这正是在Windows上如何使用python的方式。
getName


8

您可以执行以下操作:

安装cmder。像使用cmd终端一样打开并使用Cmder。使用命令别名来创建命令别名。

我做了以下事情:

alias python2 = c:\python27\python.exe
alias python3 = c:\python34\python.exe

就是这样!;-)


6
set-alias python2 c:\python27\python.exe
先知丹尼尔(Daniel)

如果使用Powershell,请使用别名设置作为示例显示。在这种情况下,将无需安装Cmder。
先知丹尼尔(Daniel)

@ProphetDaniel这应该作为单独的答案发布。它完全回答了原始问题。
Dr_Zaszuś

7

我实际上只是想到了一个有趣的解决方案。尽管Windows不允许您轻松给程序加上别名,但是您可以创建重命名的批处理文件来调用当前程序。

不要重命名可执行文件,否则将破坏很多东西,包括pip,请在与python2.exe相同的目录中创建文件python2.bat。然后添加以下行:

%~dp0python %*

这个古老的语法是什么意思?好吧,这是一个批处理脚本(Windows版本的bash)。%〜dp0获取当前目录,%*会将所有传递给脚本的参数传递给python。

对python3.bat重复

您还可以对pip和其他实用程序执行相同的操作,只需将文件中的python单词替换为pip或任何文件名即可。别名将是文件的名称。

最好的是,Windows添加到PATH时会忽略扩展名,因此运行

python3

将启动python3版本,命令python2将启动python2版本。

顺便说一句,这与Spyder用于将自身添加到Windows上的路径的技术相同。:)


1
很棒的解决方案,无需修改现有的python文件。
Om Prakash

3

您可以在一台计算机上安装多个版本的Python,并且在安装过程中可以选择让其中一个与Python文件扩展名关联。如果安装模块,则将有不同版本的安装程序包,或者您可以选择要定位的版本。由于他们通常会将自己安装到解释器版本的site-packages目录中,因此不应有任何冲突(但我尚未对此进行测试)。要选择哪个版本的python,您必须手动指定解释器的路径(如果它不是默认路径)。据我所知,它们将共享相同的PATH和PYTHONPATH变量,这可能是一个问题。

注意:我运行Windows XP。我不知道其他版本是否会发生任何更改,但我看不出会有任何原因。


3
我同时安装了python 2.5、2.6和3.1,我什至从未想过,我可能要做的事情比仅仅为我需要的每个版本运行所有安装程序都要困难。
SingleNegationElimination

3

我在装有Python 2.7和Python 3.4的Windows计算机上所做的工作是,在与Python.exe文件相同的目录中编写了一个简单的.bat文件。他们看起来像

cmd /k "c:\python27\python.exe" %*

%*允许您随后添加参数(Python文件)。我相信/ k在完成运行脚本后使提示保持打开状态。然后将其另存为python27.bat,然后转到Python 3目录并在其中创建一个bat文件。现在我可以在命令行中编写

Python27 helloworld.py

要么

Python34 helloworld.py

它们将在各自的Python版本中运行。确保C:\ python27C:\ python34在您的环境变量。

我从这里得到答案


2

我按照此处的说明分三个步骤进行了操作:全部直接从此处获取:http : //ipython.readthedocs.io/en/stable/install/kernel_install.html。我目前在Windows 8上运行Python 2.x,并安装了Anaconda 4.2.13。

1)首先安装最新版本的python:

conda create -n python3 python=3 ipykernel

2)接下来激活python3

activate python3

3)安装内核:

python -m ipykernel install --user

如果您已经安装了Python 3并且想要安装2,请切换上面的2和3。当您打开一个新笔记本时,现在可以在Python 2或3之间进行选择。


1

安装Python后检查系统环境变量,python 3的目录应该首先在PATH变量中,然后是python 2。

Windows使用的路径变量最先匹配。

和往常一样,在这种情况下py -2将启动python2。


1

我自己遇到了这个问题,我在.bat中制作了启动程序,因此您可以选择要启动的版本。

唯一的问题是您的.py必须位于python文件夹中,但是无论如何,这里是代码:

对于Python2

@echo off
title Python2 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 23, 24, 25, 26)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
path = %PATH%;C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause

对于Python3

@echo off
title Python3 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 31, 32, 33, 34)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
cls
set path = %PATH%:C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause

将它们另存为.bat并按照其中的说明进行操作。


0

将最常用的一个(在本例中为3.3)安装在另一个的顶部。这将迫使IDLE使用您想要的那个。

或者(来自python3.3自述文件):

安装多个版本

在Unix和Mac系统上,如果要使用相同的安装前缀(配置脚本的--prefix参数)安装多个版本的Python,则必须注意,安装其他版本不会覆盖您的主要python可执行文件。使用“ make altinstall”安装的所有文件和目录都包含主要版本和次要版本,因此可以并行存在。“ make install”还会创建$ {prefix} / bin / python3,它引用了$ {prefix} /bin/pythonX.Y。如果打算使用相同的前缀安装多个版本,则必须确定哪个版本(如果有)是您的“主要”版本。使用“进行安装”安装该版本。使用“ make altinstall”安装所有其他版本。

例如,如果要安装Python 2.6、2.7和3.3,而2.7是主要版本,则可以在2.7构建目录中执行“ make install”,在其他构建目录中执行“ make altinstall”。


0

我只需要安装它们。然后,我在http://defaultprogramseditor.com/的 “文件类型设置” /“上下文菜单” /搜索:“ py”下使用了免费的(可移植的)软件,选择了.py文件,并为该文件添加了“打开”命令2 IDLE,方法是复制名为“用IDLE打开”的现有命令,将名称更改为IDLE 3.4.1 / 2.7.8,并在程序路径中重新复制各个版本的文件号。现在,我只需右键单击.py文件,然后选择我要使用的IDLE。如果愿意,可以使用直接口译员做同样的事情。


-1

仅当您在Python IDE中运行代码时才有效

我在Windows操作系统上同时安装了Python 2.7和Python 3.3。如果我尝试启动文件,通常会在python 2.7 IDE上打开它。解决此问题的方法是,当我选择在python 3.3上运行代码时,我打开python 3.3 IDLE(Python GUI),选择文件,使用IDLE打开文件并保存。然后,当我运行我的代码时,它将运行到当前打开它的IDLE。反之亦然。


-1

我在Windows 10pro上同时安装了python 2.7.13和python 3.6.1,当我尝试使用pip2或pip3时,出现了同样的“致命错误”。

我所做的纠正操作是转到python.exe的python 2和python 3文件的位置,并为每个文件创建一个副本,然后根据其中的python版本,将每个副本重命名为python2.exe和python3.exe。安装文件夹。因此,我在每个python安装文件夹中都有python.exe文件和python2.exe或python3.exe(取决于python版本)。

当我键入pip2或pip3时,这解决了我的问题。


-2

如果您无法使用其他任何功能,请打开所选版本的解释器(我更喜欢使用iPython),然后执行以下操作:

import subprocess

subprocess.call('python script.py -flags')

这将使用您当前正在使用的python版本。对于单个脚本来说效果很好,但是如果您运行的脚本很多,则会很快失去控制,在这种情况下,您始终可以在其中包含所有这些调用的情况下创建批处理文件。不是最优雅的答案,但它可以工作。

有没有一种方法可以为Linux中的不同python版本创建别名?

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.