我应该如何在Windows中设置默认的Python版本

时间:2011-02-23 06:47:11

标签: python windows

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

当我在cmd中运行python时,它显示的是python版本是2.6,这是正确的!

但是当我在bat文件中编写脚本并运行它时,显示的python版本为3.1。

这里有什么问题?

bat文件中的脚本代码:

import sys
print (sys.version)

15 个答案:

答案 0 :(得分:47)

您安装的最后一个在环境中注册的Python是默认的(我不记得安装程序中的确切措辞,但它是第一个选项)。有许多设置,以确保它们全部注册,只需重新安装您想要的默认版本。

如果您想安装其他版本但不希望将其作为默认版本,请在安装期间禁用注册选项。

编辑(2012年5月19日)

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

确保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;.pyo添加到PATHEXT环境变量中,然后命令行可以只是script而没有扩展名。

答案 1 :(得分:34)

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

py -2

如果你需要从python 2.x切换到python 3.x,你将不得不使用' -3'开关

py -3

如果您希望将Python 3.x作为默认版本,那么您需要创建环境变量' PY_PYTHON'并将其值设为3.

答案 2 :(得分:14)

See here for original post

;
; 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文件时,它将由新的默认版本运行。现在我只在我的旧脚本上使用Shebang #! python2

答案 3 :(得分:12)

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

转到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版本时,它应该正确显示所需的版本。

答案 4 :(得分:9)

  1. 修改注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\python.exe\default
  2. 将默认程序设置为打开.py个文件至python.exe

答案 5 :(得分:7)

如果您知道Environment variables和称为path的系统变量,请考虑将较早出现的任何二进制文件的任何版本用作默认版本。

看下面的图片,我有3个不同的python版本,但是将使用python 3.8作为默认版本,因为它比其他两个版本要早。 (如果提到图片,越早意味着越高!)

enter image description here

答案 6 :(得分: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变量中保留所需的版本。

答案 7 :(得分:2)

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

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

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

答案 8 :(得分:2)

上面没有任何结果,这对我有用:

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

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

警告:即使此命令中的路径设置为python35,如果安装了python36,它也会将默认值设置为python36。要防止这种情况,您可以暂时将文件夹名称从Python36更改为xxPython36,运行该命令,然后删除对Python 36文件夹的更改。

答案 9 :(得分:2)

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

作为用户

  • 从命令行运行脚本时,始终键入py而不是python
  • 使用C:\Windows\py.exe
  • 设置“打开方式...”浏览器默认程序关联
  • 设置命令行文件扩展名关联以使用Windows的Python启动器(这将使输入py为可选):

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

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

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

作为脚本编写者

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

    #!/usr/bin/env python3

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


另请参见

答案 10 :(得分:1)

检查系统当前使用的是哪一个:

python --version

将主文件夹位置(例如C / ProgramFiles)和Scripts位置(C / ProgramFiles / Scripts)添加到系统的Environment Variables。添加3.x版本和2.x版本

路径位置在环境变量内排名。如果你想使用Python 2.x首先简单地放入python 2.x的路径,如果你想要Python 3.x只需要先放置3.x

This uses python 2

答案 11 :(得分:1)

为我工作。

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

同样适用于python2.7 如果您想将2.7设置为默认值,请确保将python2.7移到列表的最顶部。

  

第1步

enter image description here

  

第2步

enter image description here

  

第3步

enter image description here

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

  

python --version

>>> Python 3.6

答案 12 :(得分:1)

如果您使用的是 Windows,请使用 ASSOC 命令更改 Python 程序的默认 Python 版本。

assoc .py=<Python 3.1 directory>

答案 13 :(得分:0)

在Windows CMD中使用SET命令临时设置当前会话的默认python。

SET PATH=C:\Program Files\Python 3.5

答案 14 :(得分:-2)

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

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