经常看到使用py -m pip <pip arguments>
来使用pip的相关命令,例如,查看pip的版本:
那么,这个py是什么呢?
它是windows下的python启动器(Python Launcher for Windows):https://docs.python.org/3/using/windows.html#launcher
Windows Python启动器是一个实用工具,它帮助定位和执行不同的Python版本。它允许脚本(或命令行)指定偏好的特定Python版本,并会定位并执行该版本。
与PATH变量不同,Windows Python启动器会正确选择最合适的Python版本。它会优先选择用户级别的安装而不是系统范围内的安装,并且根据语言版本进行排序,而不是使用最近安装的版本。
从命令行启动py
Python 3.3及更高版本的系统级安装会将启动器添加到您的PATH中。这个启动器兼容所有可用的Python版本,所以无论安装了哪个版本都没关系。要检查启动器是否可用,请在命令提示符中执行以下命令:
py
从上面可以发现,安装的最新版本的Python已经被启动了。它可以像平常一样退出,任何额外的命令行参数都会被直接传递给Python。
执行 where py
可以看到py命令的路径:
py --list
:显示当前安装的python版本
例如:
在虚拟环境中启动py
如果运行启动器时没有明确指定Python版本,并且当前激活了一个虚拟环境(无论是使用标准库的venv模块还是外部的virtualenv工具创建的),那么启动器将运行虚拟环境中的解释器,而不是全局解释器。要运行全局解释器,要么停用虚拟环境,要么显式指定全局Python版本。
例如,我安装了一个python虚拟环境common-practice,已经启动:
虚拟环境中运行py命令:
用dry run判断py实际调用的命令
如果设置了环境变量 PYLAUNCHER_DRYRUN
(可以是任何值),启动器将输出它将要运行的命令,但不会实际启动 Python。
例如,我在python虚拟环境中设置了 PYLAUNCHER_DRYRUN
的值:
然后运行py test.py:
从上面输出可以看到,py实际会调用虚拟环境下的python.exe来执行test.py