【问题标题】:How to install both Python 2.x and Python 3.x in Windows如何在 Windows 中同时安装 Python 2.x 和 Python 3.x
【发布时间】:2011-04-18 01:58:29
【问题描述】:

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

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

谢谢。

【问题讨论】:

标签: python windows compatibility backwards-compatibility build-environment


【解决方案1】:

我使用一个简单的解决方案从一个版本切换到另一个版本的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 等,我也使用这种方法从一个版本快速切换到另一个版本。

【讨论】:

    【解决方案2】:

    我所做的是同时下载 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的副本保留在与重命名文件相同的目录中)

    【讨论】:

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

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

    我在 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 时的问题。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          您可以这样做:

          安装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 这应该作为单独的答案发布。它完全回答了最初的问题。
          【解决方案8】:

          我在自己的安装了 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 在您的环境变量中。

          我的回答来自here

          【讨论】:

            【解决方案9】:

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

            【讨论】:

              【解决方案10】:

              我实际上只是想到了一个有趣的解决方案。虽然 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 文件。
              【解决方案11】:

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

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

              在这种情况下,py -2 将一如既往地启动 python2。

              【讨论】:

                【解决方案12】:

                仅当您在 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 反之亦然。

                【讨论】:

                  【解决方案13】:

                  如果您使用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 之前,我搞砸了很多事情。
                  【解决方案14】:

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

                  【讨论】:

                    【解决方案15】:

                    如果您无法使用其他任何工具,请打开您选择的任何版本的解释器(我更喜欢使用 iPython),然后:

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

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

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

                    【讨论】:

                      【解决方案16】:

                      我发现正式的做法是这样的:

                      只需在 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,如上。
                      【解决方案17】:

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

                      或者(来自 python3.3 README):

                      安装多个版本

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

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

                      【讨论】:

                        【解决方案18】:

                        我在 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,所以我没有遇到任何点子相关的问题...
                        【解决方案19】:

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

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

                        【讨论】:

                        • 我同时安装了 python 2.5、2.6 和 3.1,我什至从来没有想过我可能需要做一些比为我需要的每个版本运行所有安装程序更难的事情。
                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2010-09-25
                        • 1970-01-01
                        相关资源
                        最近更新 更多