我可以在同一台计算机上安装Python 3.x和2.x吗?

我正在运行Windows,当您在命令行上运行程序时,shell / OS会根据registry设置自动运行Python。 如果我在同一台机器上安装了2.x和3.x版本的Python,会不会破坏?

我想玩Python 3,同时仍然能够在同一台机器上运行2.x脚本。

官方的共存解决scheme似乎是Python的Python启动器 ,PEP 397包含在Python 3.3.0中 。 安装版本将py.exepyw.exe启动程序转储到%SYSTEMROOT%C:\Windows ),然后分别与pypyw脚本关联。

为了使用新的启动器(无需手动设置自己的关联),请保持“注册扩展”选项的启用。 我不太清楚为什么,但在我的机器上,它将Py 2.7作为“默认”(发射器)。

通过直接从命令行调用脚本来运行脚本会将它们路由到启动器并parsingshebang(如果存在)。 你也可以明确地调用启动器并使用开关: py -3 mypy2script.py

所有的forms似乎都起作用了

  • #!C:\Python33\python.exe
  • #!python3
  • #!/usr/bin/env python3

以及肆意滥用职权

  • #! notepad.exe

你可以同时安装。

你应该写在你的脚本前面:

 #!/bin/env python2.6 

或最终..

 #!/bin/env python3.0 

更新

在Google上快速search后,我的解决scheme与Unix完美结合,下面是Windows解决scheme:

 #!c:/Python/python3_0.exe -u 

同样的事情…在脚本前面

这是我的设置:

  1. 用Windows安装程序安装Python 2.7和3.4。
  2. 转到C:\Python34 (默认安装path)并将python.exe更改为python3.exe
  3. 编辑 您的环境variables以包含C:\Python27\;C:\Python27\Scripts\;C:\Python34\;C:\Python34\Scripts\;

现在在命令行中,您可以使用python for 2.7和python3 for 3.4。

从3.3版本开始,Python引入了Windows实用工具https://docs.python.org/3/using/windows.html#python-launcher-for-windows

所以为了能够使用多个版本的Python:

  1. 安装Python 2.x(x是你需要的任何版本)
  2. 安装Python 3.x(x是你需要的任何版本,你必须有一个版本3.x> = 3.3)
  3. 打开命令提示符
  4. 键入py -2.x启动Python 2.x
  5. 键入py -3.x启动Python 3.x

我在shell中使用了2.5,2.6和3.0以及一行表单批处理脚本:

 :: The @ symbol at the start turns off the prompt from displaying the command. :: The % represents an argument, while the * means all of them. @c:\programs\pythonX.Y\python.exe %* 

将它们命名为pythonX.Y.bat并将它们放在PATH中的某处。 将首选次要版本(即最新)的文件复制到pythonX.bat 。 (例如copy python2.6.bat python2.bat 。)然后你可以从任何地方使用python2 file.py

但是,这并不能帮助甚至影响Windows文件关联情况。 为此你需要一个启动程序来读取#! 行,然后将它与.py和.pyw文件相关联。

干得好…

winpylaunch.py

 # # Looks for a directive in the form: #! C:\Python30\python.exe # The directive must start with #! and contain ".exe". # This will be assumed to be the correct python interpreter to # use to run the script ON WINDOWS. If no interpreter is # found then the script will be run with 'python.exe'. # ie: whatever one is found on the path. # For example, in a script which is saved as utf-8 and which # runs on Linux and Windows and uses the Python 2.6 interpreter... # # #!/usr/bin/python # #!C:\Python26\python.exe # # -*- coding: utf-8 -*- # # When run on Linux, Linux uses the /usr/bin/python. When run # on Windows using winpylaunch.py it uses C:\Python26\python.exe. # # To set up the association add this to the registry... # # HKEY_CLASSES_ROOT\Python.File\shell\open\command # (Default) REG_SZ = "C:\Python30\python.exe" S:\usr\bin\winpylaunch.py "%1" %* # # NOTE: winpylaunch.py itself works with either 2.6 and 3.0. Once # this entry has been added python files can be run on the # commandline and the use of winpylaunch.py will be transparent. # import subprocess import sys USAGE = """ USAGE: winpylaunch.py <script.py> [arg1] [arg2...] """ if __name__ == "__main__": if len(sys.argv) > 1: script = sys.argv[1] args = sys.argv[2:] if script.endswith(".py"): interpreter = "python.exe" # Default to wherever it is found on the path. lines = open(script).readlines() for line in lines: if line.startswith("#!") and line.find(".exe") != -1: interpreter = line[2:].strip() break process = subprocess.Popen([interpreter] + [script] + args) process.wait() sys.exit() print(USAGE) 

我只是在阅读这篇文章的时候敲了这个(因为这正是我所需要的)。 我在Ubuntu和Windows上都安装了Pythons 2.6.1和3.0.1。 如果在这里修复不起作用。

据我所知,Python运行的命令行使用PATHvariables,而不是registry设置。

所以如果你指出PATH上的正确版本,你将会使用它。 记住要重新启动命令提示符以使用新的PATH设置。

Python安装通常将.py.pyw.pyc文件与Python解释器相关联。 所以你可以通过在资源pipe理器中双击它或者在命令行窗口中input它的名字来运行Python脚本(所以不需要inputpython scriptname.py ,只需要scriptname.py就可以)。

如果要手动更改此关联,则可以在Windowsregistry中编辑这些键:

 HKEY_CLASSES_ROOT\Python.File\shell\open\command HKEY_CLASSES_ROOT\Python.NoConFile\shell\open\command HKEY_CLASSES_ROOT\Python.CompiledFile\shell\open\command 

Python启动器

人们一直在研究Windows的Python启动器:一个与.py.pyw文件相关的轻量级程序,它将在第一行中寻找“shebang”行(类似于Linux等),并启动Python 2.x或3.x根据需要。 有关详细信息,请参阅“适用于Windows的Python启动器”博客文章。

在我同时勇敢地安装之前,我有很多问题。 如果我给python会去py3当我想py2? pip / virtualenv会在py2 / 3下发生吗?

现在看起来很简单。

只是盲目地安装他们两个。 确保你得到正确的types(x64 / x32)。 安装/安装之后,请确保您添加到环境variables的path。

 [ENVIRONMENT]::SETENVIRONMENTVARIABLE("PATH", "$ENV:PATH;C:\PYTHONx", "USER") 

replace上面的命令中的x来设置path。

然后去两个文件夹。

导航

 python3.6/Scripts/ 

并将pip重命名为pip3。

如果pip3已经存在,则删除该点。 这将确保只有点将在python2下运行。 你可以validation:

 pip --version 

如果你想用python3使用pip,那么就使用

 pip3 install 

您可以类似地对python文件和其他文件执行相同的操作。

干杯!

尝试使用Anaconda。

使用Anaconda环境的概念,假设您需要Python 3来学习编程,但是您不想通过更新Python来清除Python 2.7环境。 您可以创build并激活一个名为“snakes”(或任何您想要的)的新环境,并安装最新版本的Python 3,如下所示:

 conda create --name snakes python=3 

简单的比听起来,看看这里的介绍页面: python简介

然后,为了处理您的版本2.x和3.x并行运行的具体问题,请参阅: 使用Anacondapipe理Python版本

我认为有一个选项来设置安装程序中的.py文件的Windows文件关联。 取消选中它,你应该没问题。

如果没有,您可以轻松地重新关联.py文件与以前的版本。 最简单的方法是右键点击.py文件,select“打开”/“select程序”。 在出现的对话框中,select或浏览到默认使用的python版本,并选中“总是使用这个程序打开这种文件”checkbox。

您应该确保PATH环境variables不包含两个python.exe文件(添加您当前使用的日常运行脚本的文件),或者像batch file一样使用Kniht。 除此之外,我不明白为什么不。

PS:我已经安装了2.6作为我的“主要”python和3.0作为我的“玩”python。 2.6包含在PATH中 。 一切工作正常。

这里是如何在同一台机器上运行Python 2和3

  1. 安装Python 2.x
  2. 安装Python 3.x
  3. 启动PowerShell
  4. inputPython -2来启动Python 2.x
  5. 键入Python -3启动Python 2.x

从3.3版本开始, Python的启动器就embedded到了Python中,正如2011年承诺Stand独立首次亮相时那样:

Windows的Python启动器

我会这样认为,我在同一台计算机上并行安装了Python 2.4,2.5和2.6。

我刚刚开始与python现在。 我正在阅读Zed Shaw的“学习Python的艰辛之路”一书,它要求使用Python 2.x版本,但是也需要一个需要python 3.x的类

所以这就是我所做的。

  1. 下载python 2.7
  2. 运行电源shell(应该已经安装在windows上)
  3. 运行Python IN POWERSHELL(如果它不能识别,则转到步骤4)
  4. 只有当powershell不能识别python 2.7types的时候:

“[环境] :: SETENVIRONMENTVARIABLE(”PATH“,”$ ENV:PATH; C:\ PYTHON27“,”USER“)”(不包括外部引号)

  1. 现在inputpython,你应该看到它说python 2.7等等等等等等等等等

现在为python 3.x

简单,python 3.x下载带有Python的Windows应用程序。 所以只需将Python for Windows应用程序固定到任务栏,或者创build桌面快捷方式即可完成!

为3.x打开Python for Windows

打开Powershell for python 2.x

我希望这有帮助!

当你同时添加envirementvariables时会有冲突,因为这两个可执行文件具有相同的名称: python.exe

只需重命名一个在我的情况下重命名为python3.exe

所以当我运行python它将执行python.exe女巫是2.7,当我运行python3它将执行python3.exe女巫是3.6

在这里输入图像说明

注意同样应该用pip脚本。