赞
踩
py launcher 适用于Windows用户,适用于电脑上有多个Python版本的用户
如今,最新的Python版本的Windows安装程序中肯定附带 py launcher 的安装
文章内容涉及许多晦涩的词汇,不懂就问
Changed in version 3.6.
在你通过安装程序安装Python 3.3及更高版本时, 你若勾选了
安装程序会自动为你配置环境变量
python安装路径\
python安装路径\Scripts\
%appdata%\Local\Programs\Python\Launcher\
py launcher 与所有可用的Python版本兼容,因此安装哪个版本都没有关系
(1)要检查py launcher是否可用,请在命令提示符(cmd或者power shell)中执行以下命令:
py
命令执行后,电脑上已安装的最新版本的Python被启动
(2)假设您安装了多个版本的Python(例如2.7和3.8),执行上述命令后您会注意到Python 3.8被启动,那么,要启动低版本的Python 2.7,请尝试以下命令:
py -2.7
(3)如果你想要启动电脑上最新版本的Python 2.x,请尝试以下命令:
py -2
执行命令后,电脑上Python 2.x的最新版本被启动
启动电脑上最新版本的Python 3.x,与此同理
(4)如果看到以下错误,则说明您没有安装启动器:
'py' is not recognized as an internal or external command,
operable program or batch file.
New in version 3.5.
如果py launcher在没有明确的Python版本规范的情况下运行,并且虚拟环境(使用标准库venv模块或外部virtualenv工具创建)处于活动状态,
则py launcher将运行虚拟环境的解释器,而不是全局的解释器。
要运行全局解释器:
(1)创建一个hello.py文件用作测试,包含以下内容
#! python
import sys
sys.stdout.write("hello from Python %s\n" % (sys.version,))
在hello.py所在的目录中,执行以下命令:
py hello.py
你会注意到终端中打印了最新的Python 2.x的版本号。
(2)现在将上述代码的第一行更改为:
#! python3
重新执行命令,打印最新的Python 3.x信息。
(3)与上述命令行示例一样,您可以指定一个更明确的版本限定符。假设您已安装Python 2.6,请尝试将第一行更改为:
#! python2.6
终端会打印出2.6版本信息
(3)你应该有所理解,
#! python
就是
#! python2
你可能会想#! python
为什么不是#! python3
?这是一个兼容性问题,而且在后文的目录二中可以对此进行修改
(4)py launcher 在安装时已经与Python文件关联(即关联.py, .pyw,.pyc文件)
这意味着,当您双击Windows资源管理器中的这些文件之一时,将使用py launcher
因此通过Python脚本第一行的内容,指定使用应使用的Python版本
如果Python文件的第一行以#!
开头,则称之为 “shebang” lines
Linux和其他类似Unix操作系统对此类行(“shebang” lines)具有本地支持,“shebang” lines 通常在Linux和其他类似Unix系统上用于指示应如何执行Python脚本
py launcher 允许Windows上的Python脚本使用相同的功能,并且上面的示例(目录一 > 方法二)演示了 “shebang” lines 的用法
为了允许Python脚本中的shebang行在Unix和Windows之间可移植,py launcher 支持许多“虚拟”命令来指定要使用的解释器。支持的虚拟命令是:
#! /usr/bin/env python
#! /usr/bin/python
#! /usr/local/bin/python
#! python
(1)此四行命令在安装有py launcher 的Windows系统中,脚本是可以直接是使用的
(2)但是在类Unix系统中,只支持前三个命令
例如,如果Python脚本的开头第一行为
#! /usr/bin/python
将会运行默认的Python。
由于许多在Unix上运行的Python脚本已经有了这一行,因此你会发现Windows中py launcher可以直接使用这些脚本而无需进行修改。
但如果您要在Windows上编写新脚本(又希望在Unix上使用),则应使用以/usr开头的shebang lines 之一
(3)上面的任何虚拟命令都可以带有显式版本(仅是主版本,或者是主版本和次版本)后缀。
此外,可以通过在次要版本之后添加“ -32”来请求32位版本。
即/usr/bin/python2.7-32
将请求32位Python2.7的使用。
(4)New in version 3.7: 从py launcher3.7开始,可以通过后缀“ -64”请求64位版本。此外,可以指定一个主版本、一个没有次版本的架构(例如/usr/bin/python3-64
)。
(5)/usr/bin/env
shebang lines的形式还有另一种特殊性质:在查找已安装的Python解释器之前,此表单将搜索可执行文件PATH用于Python可执行文件。这对应于Unix env程序的行为,该行为执行PATH 搜索。
在某些情况下,Python脚本中包含版本限定符(通过Shebang Lines设置,上文有详细讲解),以指示该脚本将使用哪个版本的Python
你需要先明确几个概念
#! python 3.8-64
-32
或-64
来指定是请求32位还是64位实现如果在Python脚本中找不到版本限定符,则可以通过环境变量 PY_PYTHON
设置为指定默认版本限定符(如果这句话你没看懂,请不要纠结,往下面看就懂了)
您可以参考下图设置环境变量 PY_PYTHON
默认情况下,shellbang lines中python指的是python2,可以进行修改
前提:shellbang lines皆指Python脚本中的第一行对版本设置
如果未设置相关选项,
如果完全指定了版本,
如果环境变量PY_PYTHON=3,
如果环境变量PY_PYTHON=3.1-32,
如果PY_PYTHON=3和PY_PYTHON3=3.1,
py launch 将搜索两个py.ini
配置文件
C:\Users\zgh\AppData\Local\Programs\Python\Launcher
)C:\Users\用户名\AppData\Local
路径下py.ini
文件,请自行创建请注意,INI文件中的键名不区分大小写。
例如:
[defaults]
python=3.1
[defaults]
python=3
python3=3.1
实力不足,若有错误,欢迎指正
参考资料:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。