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

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

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

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

这里有什么问题?

bat文件中的脚本代码:

 import sys print (sys.version) 

你自己在环境中注册的最后一个Python是默认的(我不记得安装程序中的确切的措辞,但它是第一个选项)。 有一些设置,以确保他们都注册一贯只是重新安装你想要的默认版本。

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

编辑(2012年5月19日)

从Python 3.3开始,Python安装程序将安装用于Windows的Python启动器 。 此程序( 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启动器,它安装在Windows目录中,因为它始终位于PATH中。

为了使关联工作,使用script.py从命令行运行脚本,而不是“python script.py”,否则将运行python而不是py 也可以使用开关运行py.exe以强制使用Python版本:

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

另外,将.py;.pyw;.pyc;.pyoPATHEXT环境变量中,然后命令行可以是没有扩展名的script

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

 py -2 

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

 py -3 

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

在这里看到原来的职位

 ; ; 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 eg #!myprog as your shebang line in scripts, and ; the launcher would invoke eg ; ; "c:\Program Files\MyCustom.exe" -a -b -c myscript.py ; ;myprog="c:\Program Files\MyCustom.exe" -a -b -c 

因此,在我的系统上,我在py.ini c:\windows\目录下创建了一个py.ini文件,其中包含以下内容:

 [defaults] python=3 

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

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

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

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

获得这个工具最简单的方法是安装Python 3.3或更高版本。

这对我工作:

 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变量中保留所需的版本。

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

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

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

 SET PATH=C:\Program Files\Python 3.5 

以上没有任何工作,这是对我来说是什么工作:

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

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

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