Windows使用py命令指定运行特定Python版本

咖啡半糖
咖啡半糖
发布时间:2026-10-23 | 8人浏览过
原创

在Windows系统中同时安装Python 3.8、3.10或3.12等多个版本是软件开发中的常见场景。许多用户容易陷入反复修改系统环境变量PATH的困境,导致解释器混乱或模块装错位置。实际上,官方针对Windows平台提供了专用的Python启动器程序py.exe。通过熟练使用py命令及其参数,开发者无需手动更改系统路径,即可在命令行、脚本或虚拟环境中精准指定并运行任意已安装的Python版本。

一、认识Windows下的Python启动器(py.exe)

当你在Windows平台使用官方安装包安装Python时,默认勾选的“py launcher”组件会被放置在C:\Windows\py.exe或用户的本地应用程序目录中。由于C:\Windows天然存在于系统全局PATH中,因此不论系统当前环境变量中指向哪一个Python安装路径,只要打开命令提示符(CMD)或PowerShell,输入py即可直接调用该启动器。

py.exe本身不是一个庞大的解释器实体,而是一个智能分发中心。它会检索系统注册表已登记的官方安装实例、用户目录和环境变量,按照特定规则将你的执行命令转发给对应的目标python.exe执行,彻底解决了多个Python版本共存时的调用冲突。

Windows使用py命令指定运行特定Python版本
图1:py.exe 启动器在接收到调用命令后的版本匹配与分发原理

二、查看当前已安装的Python版本列表

在使用py命令切换版本前,首要操作是排查当前Windows系统中已注册的所有Python版本及其实际安装路径。你可以使用以下两个选项查询:

# 查看已安装版本简要列表
py --list
# 或者使用简写
py -0

# 查看已安装版本及完整文件路径
py --list-paths
# 简写形式
py -0p

执行py -0p命令后,控制台会输出类似如下的信息:

Installed Pythons found by py Launcher for Windows
 -3.12-64 *      C:\Users\Username\AppData\Local\Programs\Python\Python312\python.exe
 -3.10-64        C:\Program Files\Python310\python.exe
 -3.8-32         C:\Python38-32\python.exe
输出标记解析:
  • -3.12-64:表示主版本为3、次版本为12、架构为64位的Python实例。
  • 星号 *:标记当前启动器的默认优先版本。若直接输入 py 而不带任何参数,将启动此版本。
  • -32 与 -64:区分同版本下的32位与64位架构,这在对接特定老旧C/C++动态链接库(DLL)时尤为关键。

三、运行指定版本的核心操作方法

指定版本运行主要分为交互式命令行(REPL)启动和脚本执行两种场景,所使用的核心参数语法完全一致。

Windows使用py命令指定运行特定Python版本
图2:使用 py 命令指定特定 Python 版本的常规操作步骤

1. 启动特定版本的交互式REPL

如果需要临时进入某一版本的终端进行代码测试,可以使用-X(主版本)或-X.Y(主次版本)参数:

# 启动最新已安装的 Python 3
py -3

# 启动特定的 Python 3.8 解释器
py -3.8

# 启动 32位的 Python 3.8
py -3.8-32

# 启动 64位的 Python 3.10
py -3.10-64

2. 指定版本运行Python脚本文件

运行外部脚本时,将版本参数紧随py之后,然后接脚本名称和传给脚本的运行参数:

# 语法:py -版本号 脚本名.py [参数列表]
py -3.10 main.py
py -3.8 data_process.py --input sample.csv --output result.json

启动器会优先解析-3.10这一属于启动器自身的指令,随后将剩余的data_process.py ...原封不动传递给对应的Python 3.10解释器。

3. 为指定版本安装与管理第三方库

在多版本环境下,如果直接在命令行输入pip install 包名,往往无法预期该包安装到了哪个Python版本的site-packages目录下。利用py -版本号 -m pip,可以精准指定依赖装入的目标解释器:

# 为 Python 3.8 安装 requests 库
py -3.8 -m pip install requests

# 检查 Python 3.10 已经安装的模块列表
py -3.10 -m pip list

# 为 Python 3.11 创建独立的虚拟环境
py -3.11 -m venv myenv_311

四、在Python脚本中使用Shebang行自动指定版本

在Linux/macOS中,脚本首行的#!/usr/bin/env python3称为Shebang,用于指定脚本的解释器。Windows操作系统内核本身并不识别Shebang注释,但Windows下的py.exe启动器对Shebang提供了内建的完整模拟支持。

Windows使用py命令指定运行特定Python版本
图3:Windows 下 py 启动器对跨平台 Shebang 首行声明的解析机制

当你的脚本第一行包含 Shebang 注释时,使用 py script.py 运行该文件,启动器会自动阅读第一行并选择对应版本,无需在命令行敲入版本参数。以下是常见且有效的声明格式:

  • #!python3.9:极简格式,指定使用Python 3.9运行。
  • #!/usr/bin/env python3.8:标准Unix兼容写法,方便脚本跨平台运行且在Windows下同样生效。
  • #!/usr/bin/python3.10-32:包含架构信息的写法,指定32位版本的Python 3.10。
命令行参数覆盖规则:如果脚本首行写了 #!python3.8,但你在命令行显式执行 py -3.11 script.py,则命令行参数拥有最高优先级,py.exe 将强制使用 Python 3.11 运行该脚本。

五、配置全局或默认的Python版本

如果日常主要开发工作已迁移至特定版本(如Python 3.11),希望直接运行py时默认进入该版本,可以通过以下两种方式设置默认行为:

1. 通过环境变量 PY_PYTHON

py.exe 会读取名为 PY_PYTHON 的环境变量。在CMD或PowerShell中临时设置:

# CMD 环境中设置当前会话默认版本为 3.10
set PY_PYTHON=3.10

# PowerShell 环境中设置当前会话默认版本
$env:PY_PYTHON="3.10"

若需永久生效,可通过Windows系统设置中的“环境变量”对话框,在“系统变量”或“用户变量”中添加变量名 PY_PYTHON,变量值设为 3.10。

2. 使用 py.ini 配置文件

Python启动器还支持读取配置文件。在用户的本地应用数据目录(即 %LOCALAPPDATA%\py.ini)或启动器同级目录下创建 py.ini 文件,内容如下:

[defaults]
# 设置默认启动版本
python=3.11

# 若需分别设置 Python 2 与 Python 3 的默认小版本
python3=3.11
python2=2.7

配置完成后,再次运行 py -0,即可看到默认标记的星号 * 已自动转移到 3.11 版本上。

六、常见问题与注意事项

在日常使用py命令时,以下几个高频细节需要特别留意:

  1. 版本未在 py --list 中显示:若手动解压了便携版(embeddable zip)或安装了非官方发行版(如某些嵌入式环境),这些版本可能没有向Windows注册表写入键值。py.exe依赖注册表定位解释器,因此无法自动识别未注册的便携目录。
  2. 与 Anaconda/Miniconda 的共存:Conda环境通常自带独立的解释器路径管理机制。若希望在Conda环境中工作,建议使用Conda自带的 conda activate env_name;而在处理非Conda的系统官方Python时,继续使用 py 命令,两者互不影响。
  3. 在批处理文件(.bat)中的使用:编写自动化脚本时,使用 py -3.9 my_task.py 比直接写 python my_task.py 更加稳健可靠,因为它不会受到不同机器上 PATH 环境变量配置差异的干扰。

七、速查与总结

下表和卡片总结了Windows环境下py命令最常用的语法场景,便于在开发日常中快速对照参考:

操作需求 对应命令 说明
查询所有版本及路径 py -0p 或 py --list-paths 展示带星号默认标记的解释器完整清单
启动指定小版本终端 py -3.9 启动已安装的 Python 3.9 REPL 交互环境
指定特定位数运行脚本 py -3.8-32 script.py 显式使用 32 位版本的 Python 3.8 执行脚本
管理特定版本的依赖包 py -3.10 -m pip install <pkg> 将第三方包精确安装到对应版本的库目录中
创建指定版本的虚拟环境 py -3.11 -m venv venv_dir 基于 3.11 核心创建隔离虚拟环境
临时覆盖默认版本 set PY_PYTHON=3.10 控制未传版本号时 py 命令的默认目标
Windows使用py命令指定运行特定Python版本
图4:Windows py 启动器常用高频命令功能总结与速查卡片
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表