ChatGPT解决这个技术问题 Extra ChatGPT

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

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

我可以在 Windows 7 中同时安装 Python 2.x 和 Python 3.x 吗?当我运行一个脚本时,我将如何“选择”哪个版本的 Python 应该运行它?上述程序是否能够同时处理多个版本的 Python?我已经搜索了好几个小时来寻找如何做到这一点无济于事。

谢谢。

是的,正如@NickT 所说,这是最简单的。不幸的是,下面的答案都没有给出简单、直接的方法。 (提到版本 3.3 的最接近。)要获得更好的答案,请参阅重复问题下接受的答案:stackoverflow.com/a/17245543/1593924 简而言之,使用新的“py”启动器,无论是否带有 -3 参数。并考虑将 shebangs (#!) 添加到您的脚本中,这样您就不需要参数了。
此外,有些人发现我在此处发布的详细信息很有帮助:stackoverflow.com/a/13533958/1593924

P
Pedro Vagner

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

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

按照下面的说明,根据您的需要更改参数。

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

Name:  PY_PYTHON
Value: 3

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

#! python2

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

> py -2 MyScript.py

要启动特定的解释器:

> py -2

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

> py

资源

文档:Using Python on Windows

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


此外,要在两个版本中使用 easy_installpip,请将路径更改为包含 c:\python35;c:\python35\scripts;c:\python27\scripts;。这允许使用 pip2/pip3easy_install-2.7/easy_install-3.5 而不是 pipeasy_install
不适用于各种不自带 Python 并坚持使用系统版本,不尊重启动器的程序。
不,不要在路径中添加任何 Python。使用 py -m pip install ...。在 py 之后添加开关以选择在哪个 Python 下运行 pip,如上所述。
D
Davos

我所做的是同时下载 2.7.6 和 3.3.4。 Python 3.3.4 可以选择在环境变量中添加它的路径,这样就完成了。所以基本上我只是手动添加了 Python 2.7.6。

如何...

开始 > 在环境中的搜索类型中选择“编辑环境变量到您的帐户”1 向下滚动到路径,选择路径,单击编辑。添加 C:\Python27;所以你应该有两个版本的 Python 的路径,但如果你没有这个,你可以很容易地编辑它,这样你就可以做到...... C:\Python27;C:\Python33;导航到 C:\ 中的 Python27 文件夹并将 python.exe 的副本重命名为 python2.exe 导航到 C:\ 中的 Python34 文件夹并将 python.exe 的副本重命名为 python3.exe 测试:打开命令提示符并键入python2 ....砰!蟒蛇 2.7.6。退出。测试:打开命令提示符并输入 python3 ....BOOM!蟒蛇 3.4.3。退出。

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


这将破坏 pip2 和 pip3!不要替换python,复制它并将第二个文件重命名为python2/python3。
请注意,在我恢复名称之前,我无法卸载 python。我的建议是制作副本并重命名它们,但不要保留原始的 python.exe 文件**正如 bruno 也提到的那样。
您能否在答案中处理 brunofitas 反馈?
是的,我刚刚将Python3安装中的python.exe重命名为python3.exe。我认为这在 *nix 环境中使用 python 会自动发生。当然没有 .exe 文件,但有一个 python2 和 python3 程序。 :)
如果您有一个依赖于任一版本的 python 的库/插件,请确保该版本位于您的 PATH 环境变量中
C
Community

我在 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后,一切顺利。
这也对我有用。我在 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 作为 pip3pip3.4。 (它还包括它作为 pip,但我认为删除它应该可以解决与 python2 的任何冲突)。实际上我的 Path 中没有 C:\Python34\Scripts,所以我没有任何与点子相关的问题......
p
philshem

如果您使用 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。)

链接:

Download Anaconda Python

Instructions for environments


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

要在同一系统中安装和运行任何版本的 Python,请按照下面的指南进行操作。

例如,假设您想在同一个 Windows 系统上安装 Python 2.x 和 Python 3.x。

在您想要的任何地方安装它们的两个二进制版本。当提示时不要注册他们的文件扩展名,也不要将它们自动添加到 PATH 环境变量中 运行简单的命令 python 将选择在 PATH 中首次遇到的可执行文件进行启动。换句话说,手动添加 Python 目录。键入 python 时将选择您首先添加的那个。连续的 python 程序(它们的目录放置在 PATH 中的顺序增加)将被选择如下: py -2 用于第二个 python py -3 用于第三个 python 等。无论“python”的顺序如何,您都可以:运行 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)。

运行 py -2 会启动 Python 2.7(因为碰巧第二个 Python 是与 py -2 不兼容的 Python 3.5)。运行 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 dist 中指定 pip 安装?
对于找到的第一个 python,只需键入 pip。对于安装的任何其他 python,您必须手动指定路径,即。 C:\Python27\Scripts\pip.py [parameters]。 (当然,作为一种快捷方式,你可以将任何你想要的 exe 放在环境变量中。)
@Nik-Lz 你指的是什么“py -2”命令?我的 Windows 7 上似乎没有这些。
这正是在多个版本的情况下应该如何在 Windows 上使用 python。
@RamShankarKumar 您将-m pip install nameOfModule附加到您使用的任何python命令(如答案中所述)。对于 Windows,我使用 pip-Win 让我的生活更轻松。
T
Tonechas

以下是您可以执行的操作:

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

我做了以下事情:

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

就是这样! ;-)


set-alias python2 c:\python27\python.exe
如果使用 Powershell,请使用 set-alias 作为示例。在这种情况下,无需安装 Cmder。
@ProphetDaniel 这应该作为单独的答案发布。它完全回答了最初的问题。
E
Efren

从 3.3 版本开始 Windows 版本有 Python 启动器,请看第 3.4 节。 Python Launcher for Windows


S
Skylion

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

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

%~dp0python %*

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

对 python3.bat 重复

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

最重要的是,当添加到 PATH 时,Windows 会忽略扩展,因此正在运行

python3

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

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


很棒的解决方案,无需修改现有的 python 文件。
l
li.davidm

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

注意:我运行的是 Windows XP。我不知道其他版本是否有任何变化,但我看不出有任何理由。


我同时安装了 python 2.5、2.6 和 3.1,我什至从来没有想过我可能需要做一些比只为我需要的每个版本运行所有安装程序更难的事情。
B
Bryan Kimani

我在自己的安装了 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:\python27 和 c:\python34 在您的环境变量中。

我从 here 得到了答复


M
Moiz Kapadia

我按照此处的说明分三个步骤完成了此操作:所有内容均直接从此处获取: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 之间进行选择。


S
Spitfire19

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

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

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


T
Tonechas

我自己也遇到过这个问题,我在 .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 并按照里面的说明进行操作。


a
abudhabikid

将您最常用的一个(在我的情况下为 3.3)安装在另一个之上。这将迫使 IDLE 使用你想要的那个。

或者(来自 python3.3 README):

安装多个版本

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

例如,如果您想安装 Python 2.6、2.7 和 3.3,其中 2.7 作为主要版本,您将在 2.7 构建目录中执行“make install”,在其他构建目录中执行“make altinstall”。


w
wheya

我只需要安装它们。然后我在“文件类型设置”/“上下文菜单”/搜索:“py”下的 http://defaultprogramseditor.com/ 使用免费(和便携式)软件,选择 .py 文件并通过复制为 2 IDLE 添加一个“打开”命令名为'open with IDLE的existant命令,将名称更改为IDLE 3.4.1/2.7.8,并替换程序路径中各自版本的文件编号。现在我只需右键单击 .py 文件并选择要使用的 IDLE。如果您愿意,也可以使用直接口译员。


w
walthor

我使用一个简单的解决方案从一个版本切换到另一个版本的 python,你可以安装你想要的所有版本。您所要做的就是创建一些可变环境。就我而言,我已经安装了 python 2.7 和 python 3.8.1,所以我创建了这个环境变量:

PYTHON_HOME_2.7= PYTHON_HOME_3.8.1= PYTHON_HOME=%PYTHON_HOME_2.7%

然后在我的 PATH 环境变量中,我只放了 %PYTHON_HOME% 和 %PYTHON_HOME%\Scripts。在上面的示例中,我使用的是 2.7 版本,当我想切换到其他版本时,我只需设置 PYTHON_HOME=%PYTHON_HOME_3.8.1%。对于 JAVA、MAVEN、GRADLE、ANT 等,我也使用这种方法从一个版本快速切换到另一个版本。


A
Alexandre Bell

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

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


S
Sergio Ayestarán

我已经在 Windows 10pro 上安装了 python 2.7.13 和 python 3.6.1,当我尝试 pip2 或 pip3 时,我得到了相同的“致命错误”。

我为纠正这个问题所做的是转到 python.exe 的位置以获取 python 2 和 python 3 文件并为每个文件创建一个副本,然后我将每个副本重命名为 python2.exe 和 python3.exe,具体取决于安装文件夹。因此,我在每个 python 安装文件夹中都有一个 python.exe 文件和一个 python2.exe 或 python3.exe,具体取决于 python 版本。

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


A
Alex P.

如果您无法进行其他任何工作,请在您选择的任何版本中打开一个解释器(我更喜欢使用 iPython)并:

import subprocess

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

这使用您当前正在运行的任何 python 版本。对于单个脚本工作正常,但如果您运行大量脚本,很快就会失控,在这种情况下,您总是可以制作一个包含所有这些调用的批处理文件。不是最优雅的答案,但它有效。

有没有办法为不同的python版本(如Linux)制作别名?