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

How to install both Python 2.x and Python 3.x in Windows 7

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

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

谢谢。


我发现这样做的正式方法如下:

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

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

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

1
2
Name:  PY_PYTHON
Value: 3

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

1
#! python2

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

1
> py -2 MyScript.py

要启动特定的口译员:

1
> py -2

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

1
> py

资源

文档:在Windows上使用Python

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


我做的是下载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 .... BOOM! Python 2.7.6。退出。

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

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


    我在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


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

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

    1
    conda create -n py34 python=3.4 anaconda

    然后激活环境:

    1
    activate py34

    并且deactive:

    1
    deactivate py34

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

    链接:

    下载Anaconda Python

    环境说明


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


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

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

    1
    %~dp0python %*

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

    重复python3.bat

    你也可以为pip和其他实用程序做同样的事情,只需用pip或文件名替换文件中的单词python。别名将是文件的名称。

    最重要的是,当添加到PATH时,Windows会忽略扩展程序以便运行

    1
    python3

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

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


    这是你可以做的:

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

    我做了以下事情:

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

    就是这样! ;-)


    要在同一系统中安装和运行任何版本的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是第二个。

    • 因此,运行python命令将启动python 2.7(如果Python 3.5相同的命令将启动Python 3.5)。
    • 运行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 2.7和Python 3.4的Windows计算机上所做的是在一个与Python.exe文件相同的目录中写了一个简单的.bat文件。他们看起来像,

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

    %*允许您之后添加参数(Python文件)。我相信/ k在完成脚本运行后会保持提示打开。然后我保存为python27.bat然后我去我的Python 3目录并在那里制作一个bat文件。现在在我的命令行中我可以写

    1
    Python27 helloworld.py

    要么

    1
    Python34 helloworld.py

    它们将在各自的Python版本中运行。确保c: python27和c: python34在您的环境变量中。

    我从这里得到了答案


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

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


    我按照这里的说明分三步完成了这一步:这一切都直接来自这里:http://ipython.readthedocs.io/en/stable/install/kernel_install.html。我目前正在Windows 8上运行Python 2.x并安装了Anaconda 4.2.13。

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

    1
    conda create -n python3 python=3 ipykernel

    2)接下来激活python3

    1
    activate python3

    3)安装内核:

    1
    python -m ipykernel install --user

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


    我自己遇到了这个问题,并且我在.bat中创建了我的发射器,因此您可以选择要启动的版本。

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

    对于Python2

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @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并按照里面的说明操作。


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

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

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


    安装你最常用的一个(在我的情况下为3.3)在另一个的顶部。这会迫使IDLE使用你想要的那个。

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

    安装多个版本

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

    例如,如果要安装Python 2.6,2.7和3.3,则为2.7
    在主版本中,您将在2.7 build目录中执行"make install"
    并在其他人中"制造altinstall"。


    我个人所做的非常简单。

    系统:Windows 8.1 x86_64,Python x64版本

  • 安装最新的Python 3.x二进制文件并将目录添加到路径(我还注册.py扩展以使用Python 3.x运行)。
  • 安装最新的Python 2.x二进制文件(不使用它注册扩展而不添加到路径)。
  • 如果安装了Python 2.x二进制文件,Python 3.x似乎向后兼容Python 2.x.

    从官方Python网站下载安装程序。如上所述安装后,正常运行Python 3。现在,对于Python 2.x程序,运行它们:py -2 [command]

    在多个Python 2.x程序上测试。


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


    只有在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相反。


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


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

    1
    2
    3
    import subprocess

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

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

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