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,您应该使用
链接:
下载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环境变量中
只运行命令
-
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时,这可能会改变。
现在我的系统输出
希望这很清楚。
我在自己安装了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 2.x二进制文件,Python 3.x似乎向后兼容Python 2.x.
从官方Python网站下载安装程序。如上所述安装后,正常运行Python 3。现在,对于Python 2.x程序,运行它们:
在多个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版本制作别名?