我可以在同一台计算机上安装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.exe
和pyw.exe
启动程序转储到%SYSTEMROOT%
( C:\Windows
),然后分别与py
和pyw
脚本关联。
为了使用新的启动器(无需手动设置自己的关联),请保持“注册扩展”选项的启用。 我不太清楚为什么,但在我的机器上,它将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
同样的事情…在脚本前面
这是我的设置:
- 用Windows安装程序安装Python 2.7和3.4。
- 转到
C:\Python34
(默认安装path)并将python.exe更改为python3.exe - 编辑 您的环境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:
- 安装Python 2.x(x是你需要的任何版本)
- 安装Python 3.x(x是你需要的任何版本,你必须有一个版本3.x> = 3.3)
- 打开命令提示符
- 键入py -2.x启动Python 2.x
- 键入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
- 安装Python 2.x
- 安装Python 3.x
- 启动PowerShell
- inputPython -2来启动Python 2.x
- 键入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的类
所以这就是我所做的。
- 下载python 2.7
- 运行电源shell(应该已经安装在windows上)
- 运行Python IN POWERSHELL(如果它不能识别,则转到步骤4)
- 只有当powershell不能识别python 2.7types的时候:
“[环境] :: SETENVIRONMENTVARIABLE(”PATH“,”$ ENV:PATH; C:\ PYTHON27“,”USER“)”(不包括外部引号)
- 现在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脚本。