我在Windows 7上安装Python 2.6
并Python 3.1
设置了环境变量:path = d:\python2.6
。
当我在python
中运行时cmd
,它将显示python版本2.6,这是我想要的!
但是,当我在bat文件中编写脚本并运行它时,显示的python版本是3.1。
import sys
print (sys.version)
这里发生了什么?
Answers:
如果您同时安装了两个版本。
去 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版本时,它应该正确显示所需的版本。
您安装的最后一个在环境中注册自身的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
将代替运行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.8
和py -3.8-32
将启动64位和32位蟒,分别。
运行“ py”命令将告诉您所运行的版本。如果您当前正在运行3.x,并且需要切换到2.x,则需要使用开关'-2'
py -2
如果您需要从python 2.x切换到python 3.x,则必须使用“ -3”开关
py -3
如果您希望将Python 3.x作为默认版本,则需要创建环境变量“ PY_PYTHON”并将其值设置为3。
py -2 test.py
...然后默认情况下,python test.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 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 。
如果您是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" %*
ftype Python.NoConFile="C:\Windows\pyw.exe" "%L" %*
通过设置PY_PYTHON
环境变量来设置首选的默认版本(例如PY_PYTHON=3.7)
,您可以通过键入来查看python的默认版本py
。也可以设置PY_PYTHON3
或PY_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)。
也可以看看
以上没有任何工作,这对我有用:
ftype Python.File=C:\Path\to\python.exe "%1" %*
该命令应在以管理员身份启动的命令提示符下运行
警告:即使此命令中的路径设置为python35,如果您已安装python36,它将默认设置为python36。为防止这种情况,您可以将文件夹名称从临时更改Python36
为xxPython36
,运行命令,然后将更改删除至Python 36文件夹。
python
在命令提示符下调用时,这不会改变行为。
检查系统当前正在使用哪个:
python --version
将主文件夹位置(例如C / ProgramFiles)和脚本位置(C / ProgramFiles / Scripts)添加到系统的环境变量中。添加3.x版本和2.x版本
路径位置在环境变量中排名。如果要使用Python 2.x,只需将python 2.x的路径放在首位,如果要使用Python 3.x,则只需将3.x放在首位
python scriptfile.py
。