如何在Windows中设置默认的Python版本?


74

我在Windows 7上安装Python 2.6Python 3.1设置了环境变量:path = d:\python2.6

当我在python中运行时cmd,它将显示python版本2.6,这是我想要的!
但是,当我在bat文件中编写脚本并运行它时,显示的python版本是3.1。

    import sys
    print (sys.version)

这里发生了什么?


.bat文件中的Python代码不会被Python解释,而是cmd.exe尝试解释它不起作用。将Python代码放入.py文件,然后放入.bat文件python scriptfile.py
martineau 2011年

谢谢你的好意我找到了正确的方法,我修改HKEY_LOCAL_CLASS \应用程序\ Python.exe \壳\开放\命令的注册表项的值,然后它的工作原理正确的bat文件!
鲁尼

Answers:


74

如果您同时安装了两个版本。

This PC -> Right-click -> Click on Properties -> Advanced System Settings.

您将看到System Properties。从这里导航到"Advanced"选项卡->单击Environment Variables

你会看到上半部分为用户变量和下半部分System variables

选中,System Variables然后双击Path(以编辑路径)。

检查Python的路径(您希望运行该路径,即Python 2.x或3.x)并将其移至“路径”列表的顶部

重新启动命令提示符,现在当您检查Python版本时,它应该正确显示所需的版本。


3
这是一个很好的解决方案。将所有Python位置(例如2.7、3.7等)保留在路径上。谢谢!
justincohler '19

5
确保也获得路径的脚本部分:C:\ Python27; C:\ Python27 \ Scripts \;
eliteproxy

需要注意的一个细节是:如果在自定义安装过程中未勾选“为所有用户安装”(或未以管理员身份安装),Python将被安装到%LOCALAPPDATA%\ Programs \ Python,并将其添加到用户环境变量中的PATH 。如果其他Python确实以admin /身份为所有用户安装,它将进入C:\ Program Files \,并添加到系统环境变量的PATH中。通常,用户环境变量将覆盖系统变量,但PATH始终是(系统PATH +用户PATH)。这就是让我绊倒的事情,所以我想在这里记一下。
Ryan Plant

65

您安装的最后一个在环境中注册自身的Python是默认设置(我不记得安装程序中的确切措辞,但这是第一个选项)。有许多设置,因此要确保它们都被一致注册,只需重新安装您想要作为默认版本的版本即可。

如果要安装其他版本,但又不想将其作为默认版本,则只需在安装过程中禁用注册选项即可。

编辑(2012年5月19日)

从Python 3.3开始,Python安装程序将安装Windows的Python Launcher。该程序(py.exe)与Python文件扩展名相关联,并寻找“ shebang”注释来指定要运行的python版本。这允许多种版本的Python共存,并允许Python脚本明确指定要使用的版本。如果未指定,则默认为当前体系结构(x86或x64)使用最新的Python 2.X版本。可以通过py.ini文件或PY_PYTHON环境变量来自定义该默认值。查看文档更多详细信息,。

只要确保Python 3.3是在Windows上注册的最新安装的Python。如果稍后安装了其他版本的Python,请确保不要在环境中注册它们,因此启动器将保持默认状态。

这是检查启动器是否从控制台正确注册的方法:

C:\>assoc .py
.py=Python.File

C:\>ftype Python.File
Python.File="C:\Windows\py.exe" "%1" %*

在上方,.py文件与Python.File类型相关联。命令行Python.File是Python Launcher,它安装在Windows目录中,因为它始终位于PATH中。

为了使关联正常运行script.py,请使用而不是“ python script.py”从命令行运行脚本,否则python将代替运行pypy.exe也可以与开关一起运行以强制使用Python版本:

py -3 script.py    # force latest Python 3.X version to be used.

另外,添加.py;.pyw;.pyc;.pyoPATHEXT环境变量,然后命令行可以只是不script带扩展名。


+1虽然我希望有更好的方法,但这对我有用。谢谢。
westsider

1
如果不从控制面板中添加/删除程序进行修复,而不必完全重新安装默认的Python版本,则它具有相同的效果,但速度要快得多。
吉尔斯·史密斯

这个建议是不正确的。刚安装Python 2.7.5时,它没有做任何事情。我只需要手动更改PATH。
汤姆W

1
事后看来,这种语气并不是很恰当,所以我很抱歉-我想修正我的意见,我似乎无法做到-尽管StackOverflow的观点会有所帮助,所以我认为这很适合指出行为似乎不再相同。
汤姆W

1
py -3.8py -3.8-32将启动64位和32位蟒,分别。
Cees Timmerman

63

运行“ py”命令将告诉您所运行的版本。如果您当前正在运行3.x,并且需要切换到2.x,则需要使用开关'-2'

py -2

如果您需要从python 2.x切换到python 3.x,则必须使用“ -3”开关

py -3

如果您希望将Python 3.x作为默认版本,则需要创建环境变量“ PY_PYTHON”并将其值设置为3。


3
这非常有用,不需要编辑注册表项...在命令行中运行python 2脚本时...可以执行py -2 test.py...然后默认情况下,python test.py如果它是基于python 3的代码
sasori,2015年

1
这是最好的答案。简单是最好的
yapws87 '18

PY_PYTHON无法正常工作,从PATH变量中删除python(不需要的版本)路径对我有用。
Naveen Kumar

14

看到这里的原始帖子

;
; This is an example of how a Python Launcher .ini file is structured.
; If you want to use it, copy it to py.ini and make your changes there,
; after removing this header comment.
; This file will be removed on launcher uninstallation and overwritten
; when the launcher is installed or upgraded, so don't edit this file
; as your changes will be lost.
;
[defaults]
; Uncomment out the following line to have Python 3 be the default.
;python=3

[commands]
; Put in any customised commands you want here, in the format
; that's shown in the example line. You only need quotes around the
; executable if the path has spaces in it.
;
; You can then use e.g. #!myprog as your shebang line in scripts, and
; the launcher would invoke e.g.
;
; "c:\Program Files\MyCustom.exe" -a -b -c myscript.py
;
;myprog="c:\Program Files\MyCustom.exe" -a -b -c

因此,在我的系统上,我制作了一个py.ini文件c:\windows\py.exe,其中存在以下内容:

[defaults]
python=3

现在,当您双击.py文件时,它将以新的默认版本运行。现在,我只#! python2在旧脚本上使用Shebang 。


9
  1. 编辑注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\python.exe\default
  2. 设置默认程序以打开.py文件python.exe

9

如果您是Windows用户,并且具有Python 3.3或更高版本,则应在计算机上安装适用于WindowsPython Launcher,这是用于启动所有python脚本的推荐方法(无论该脚本需要的python版本如何) )。

作为用户

  • 从命令行运行脚本时,请始终键入py而不是python

  • 设置与您的“打开方式...”资源管理器的默认程序关联 C:\Windows\py.exe

  • 设置命令行文件扩展名关联以使用适用于Windows的Python启动器(这将使键入成为py可选内容):

    ftype Python.File="C:\windows\py.exe" "%L" %*

    ftype Python.NoConFile="C:\Windows\pyw.exe" "%L" %*

  • 通过设置PY_PYTHON环境变量来设置首选的默认版本(例如PY_PYTHON=3.7),您可以通过键入来查看python的默认版本py。也可以设置PY_PYTHON3PY_PYTHON2指定python 3和python 2的默认版本(如果有多个版本)。

  • 如果需要运行特定版本的python,则可以使用py -M.m(其中M是主要版本,m是次要版本)。例如,py -3将运行任何已安装的python 3版本。

  • 使用列出python的安装版本py -0

作为剧作家

  • 在脚本顶部添加一个shebang行,该行指示所需的主要Python版本号。如果该脚本与任何其他次要版本都不兼容,请同时包含次要版本号。例如:

    #!/usr/bin/env python3

  • 您也可以使用shebang线来指示虚拟环境(请参阅下面的PEP 486)。


也可以看看


8

如果您知道Environment variables并且系统变量称为path,那么可以认为较早出现的任何二进制文件的任何版本都将用作默认版本。

看下面的图片,我有3个不同的python版本,但是python3.8将被用作默认版本,因为它比其他两个版本要早。(在提到图片的情况下,越早意味着越高!)

在此处输入图片说明


4

这为我工作:

Control Panel\System and Security\System

选择

Advanced system settings from the left panel
from Advanced tab click on Environment Variables

在系统变量部分中搜索(如果不存在则创建

PYTHONPATH

并设置

C:\Python27\;C:\Python27\Scripts;

或您想要的版本

您需要重新启动CMD。

如果仍然无法正常工作,您可能只想将所需的版本留在PATH变量中。


3

这项工作对我来说。

如果要使用python 3.6,则必须将python3.6移动到列表顶部。

python2.7同样适用。如果要使用2.7作为默认值,请确保将python2.7移动到列表的最顶部。

第1步

在此处输入图片说明

第2步

在此处输入图片说明

第三步

在此处输入图片说明

然后关闭任何cmd命令提示符并再次打开,它应该可以正常工作。

python --version

>>> Python 3.6

1
Oraios @George C.
Datacrawler

2

现在已经发布了Python 3.3,最简单的方法是使用此处描述的py.exe实用程序:http ://www.python.org/dev/peps/pep-0397/

它允许您使用UNIX样式指令在脚本文件中指定Python版本。还有命令行和环境变量选项,用于控制运行哪个版本的Python。

获得此实用程序的最简单方法是安装Python 3.3或更高版本。


2

以上没有任何工作,这对我有用:

ftype Python.File=C:\Path\to\python.exe "%1" %*

该命令应在以管理员身份启动的命令提示符下运行

警告:即使此命令中的路径设置为python35,如果您已安装python36,它将默认设置为python36。为防止这种情况,您可以将文件夹名称从临时更改Python36xxPython36,运行命令,然后将更改删除至Python 36文件夹。


python在命令提示符下调用时,这不会改变行为。
cat40

当我们仅使用其名称运行python时,这将起作用
Smart Manoj

2

检查系统当前正在使用哪个:

python --version

将主文件夹位置(例如C / ProgramFiles)和脚本位置(C / ProgramFiles / Scripts)添加到系统的环境变量中。添加3.x版本和2.x版本

路径位置在环境变量中排名。如果要使用Python 2.x,只需将python 2.x的路径放在首位,如果要使用Python 3.x,则只需将3.x放在首位

这使用python 2


1

SETWindows CMD中的Use命令可为当前会话临时设置默认python。

SET PATH=C:\Program Files\Python 3.5

-3

尝试修改Windows注册表中的路径(HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment)。

警告:不要破坏注册表:)


我已经正确地设置了环境VAR,对于我的问题,它不会在bat文件的工作
鲁尼

2
谢谢你的好意我找到了正确的方法,我修改HKEY_LOCAL_CLASS \应用程序\ Python.exe \壳\开放\命令的注册表项的值,然后它的工作原理正确的bat文件!
鲁尼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.