我在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)
答案 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
而不是py
。 py.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)
;
; 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)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\python.exe\default
.py
个文件至python.exe
答案 5 :(得分:7)
如果您知道Environment variables
和称为path
的系统变量,请考虑将较早出现的任何二进制文件的任何版本用作默认版本。
看下面的图片,我有3个不同的python版本,但是将使用python 3.8
作为默认版本,因为它比其他两个版本要早。 (如果提到图片,越早意味着越高!)
答案 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_PYTHON3
或PY_PYTHON2
来指定默认的python 3和python 2版本(如果有多个版本)。
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
答案 11 :(得分:1)
如果要使用python 3.6,必须将python3.6移动到列表顶部。
同样适用于python2.7 如果您想将2.7设置为默认值,请确保将python2.7移到列表的最顶部。
第1步
第2步
第3步
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)。
警告:不要破坏注册表:)