我在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;.pyo
到PATHEXT
环境变量中,然后命令行可以是没有扩展名的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
在我的旧脚本。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\python.exe\default
.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。 为了防止这种情况,您可以暂时将文件夹名称从Python36
为xxPython36
,运行该命令,然后删除对Python 36文件夹的更改。