234

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

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

谢谢。

4

19 回答 19

151

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

只需在 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 启动器

于 2013-08-12T21:48:53.267 回答
81

我所做的是同时下载 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!蟒蛇 2.7.6。退出。

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

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

于 2014-03-25T06:13:36.860 回答
54

I have multiple versions in windows. I just change the exe name of the version I'm not defaulting to.

python.exe --> python26.exe

pythonw.exe --> pythonw26.exe

As for package installers, most exe installers allow you to choose the python install to add the package too. For manual installation check out the --prefix option to define where the package should be installed:

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

于 2010-09-28T03:07:40.200 回答
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

环境说明

于 2014-10-16T12:54:34.643 回答
13

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


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

  1. 在您想要的任何地方安装它们的两个二进制版本。

    • 当提示时不要注册他们的文件扩展名和
    • 不要将它们自动添加到 PATH 环境变量中
  2. 只需运行命令python,将选择在 PATH 中首次遇到的可执行文件进行启动。换句话说,手动添加 Python 目录。键入时将选择您首先添加的那个python。连续的 python 程序(它们的目录放置在 PATH 中的递增顺序)将被选择如下:

    • py -2 第二次python
    • py -3 表示第三个python等等。
  3. 无论“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)。
  • Runningpy -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等。

希望这足够清楚。

于 2018-01-13T12:00:33.670 回答
9

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

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

我做了以下事情:

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

就是这样!;-)

于 2015-05-26T17:42:12.067 回答
8

从 3.3 版本开始 Windows 版本有 Python 启动器,请看第 3.4 节。适用于 Windows 的 Python 启动器

于 2013-08-26T12:11:13.233 回答
7

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

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

%~dp0python %*

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

对 python3.bat 重复

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

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

python3

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

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

于 2016-02-19T21:37:54.887 回答
3

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

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

于 2010-09-28T02:46:02.480 回答
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 :\python27和c:\python34在您的环境变量中。

我从这里得到了答案

于 2016-07-06T09:45:54.763 回答
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 之间进行选择。

于 2017-01-25T06:06:47.513 回答
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 并按照里面的说明进行操作。

于 2014-08-01T16:08:47.333 回答
1

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

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

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

于 2015-11-04T16:44:09.617 回答
0

将您最常用的一个(在我的情况下为 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”。

于 2013-07-15T17:43:33.277 回答
0

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

于 2014-07-13T23:02:00.220 回答
0

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

PYTHON_HOME_2.7=<path_python_2.7> PYTHON_HOME_3.8.1=<path_python_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 等,我也使用这种方法从一个版本快速切换到另一个版本。

于 2020-10-28T17:10:50.047 回答
-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。它与 2.7 反之亦然。

于 2014-02-11T02:53:41.810 回答
-1

我已经在 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 时,这解决了我的问题。

于 2017-04-01T17:44:06.733 回答
-2

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

import subprocess

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

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

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

于 2014-02-13T16:01:29.230 回答