Windows多版本Python共存时,怎么在命令行指定版本运行

追风的人
追风的人
发布时间:2026-11-11 | 2人浏览过
原创

详细讲解在Windows多版本Python共存环境下,如何通过官方py.exe启动器在命令行指定Python版本运行脚本、启动交互终端及管理第三方库,并排查应用别名与PATH环境变量冲突。

一、核心机制:Windows 官方 Python 启动器(py.exe)

在 Windows 上安装官方 Python 时(从 Python 3.3 及更高版本起),安装向导默认会勾选并安装一个轻量级的全局程序:py.exe(以及窗口程序 pyw.exe)。它遵循 Python 官方标准 PEP 397,专门解决 Windows 平台下的多版本调度问题。

很多开发者习惯于直接在命令行敲 python,但这在多版本共存时往往会带来麻烦:Windows 仅仅根据系统环境变量 PATH 中的先后顺序执行排在最前面的那个 python.exe。一旦安装了新版本或者某个安装包重排了 PATH,默认调用的版本就会在不知不觉中发生改变。

相比之下,py.exe 默认安装在系统的全局路径 C:\Windows\py.exe 中,任何命令行窗口(CMD、PowerShell、Windows Terminal 等)都能无条件直接访问。它的核心作用不是充当解释器,而是一个“调度中枢”:通过读取注册表和命令行参数,将任务精准转发给指定的 Python 解释器。

Windows多版本Python共存时,怎么在命令行指定版本运行
图 1:Windows 官方 py.exe 启动器调度机制架构图

二、第一步:探查系统当前已识别的所有 Python 版本

在指定版本运行之前,首先应当查看当前系统中已经被 py.exe 发现并注册的所有 Python 运行时版本。

打开 CMD 或 PowerShell,输入以下命令之一:

py --list
# 或者使用简写参数
py -0
示例输出(实际环境依本地安装情况而定)
-V:3.12 * Python 3.12 (64-bit)
-V:3.10 Python 3.10 (64-bit)
-V:3.8-32 Python 3.8 (32-bit)

输出结果包含三个关键信息:

  • 版本参数标签(如 -V:3.12):冒号后面的部分即为后续在命令行中可以直接引用的版本参数。
  • 默认版本标记(星号 *):带有星号的版本表示如果仅输入 py 而不带版本参数时,系统将默认启用的解释器。
  • 位数与架构(如 64-bit / 32-bit):清晰标明各个安装实例是 64 位还是 32 位版本。

三、常用命令:在终端直接指定特定版本执行

确认了本地安装的版本标签后,即可通过 py -<version> 在命令行按需调度不同版本。

1. 运行指定的 Python 脚本文件

若当前有一个名为 main.py 的脚本,希望强制使用 Python 3.10 运行,只需执行:

py -3.10 main.py

如果需要使用 Python 3.12 执行同一个脚本,只需修改参数:

py -3.12 main.py

即使系统安装了 Python 2.7 与 3.x,也可以通过大版本简写快速区分:py -2 script.py 或 py -3 script.py。

2. 启动特定版本的交互式终端(REPL)

如果只是想进入某版本的交互式解释器测试语法,直接输入带有版本号的 py 命令,不加任何文件名:

py -3.10
示例输出
Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr 5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
Windows多版本Python共存时,怎么在命令行指定版本运行
图 2:命令行指定 Python 版本的完整实操工作流

四、关键安全准则:如何为指定版本安装第三方包(pip)

高频踩坑提醒:多版本 Python 共存时,严禁直接在命令行裸跑 pip install xxx!因为单纯的 pip 会调用环境变量 PATH 中排在最前面的 pip 脚本,导致扩展包被安装进不可预期的 Python 版本中,从而在运行时报出 ModuleNotFoundError。

标准做法是借助 py.exe 的 -m 参数,显式将 pip 模块绑定到目标 Python 版本上:

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

# 为 Python 3.12 安装 pandas 和 numpy
py -3.12 -m pip install pandas numpy

# 查看 Python 3.10 当前已安装的所有第三方包
py -3.10 -m pip list

通过 py -<version> -m pip,能确保安装行为 100% 作用于指定版本的 site-packages 目录,彻底杜绝包环境污染与定位混乱。

五、进阶调度:指定架构、默认版本配置与 Shebang 脚本指令

1. 区分 32 位与 64 位版本

如果因兼容某些特定硬件驱动或旧 DLL 动态库,在同一台机器上同时安装了 32 位和 64 位的 Python 3.8,可以在版本号后追加位数后缀:

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

# 启动 64 位的 Python 3.8
py -3.8-64 main.py

2. 设置当前终端或系统的默认 Python 版本

当直接输入 py script.py 而不带版本参数时,启动器会使用默认版本。如果想临时或永久改变这个默认目标,有以下两种方式:

  • 通过环境变量临时设置:在当前命令行会话中设置 PY_PYTHON 环境变量:
    set PY_PYTHON=3.10
    设置后,在当前窗口直接敲 py main.py 就会默认采用 Python 3.10。
  • 通过 py.ini 配置文件永久固化:在用户的配置目录 %LOCALAPPDATA%\py.ini 文件(若不存在可新建)中写入配置:
    [defaults]
    python=3.10

3. 在脚本首行使用 Shebang(#!)声明版本

Windows 上的 py.exe 完美支持类 Unix 风格的 Shebang 注释。只需在 .py 脚本的第一行写明期望的版本:

#!python3.10
import sys
print(f"当前运行解释器版本为: {sys.version}")

此时在终端中直接运行:

py script.py

py.exe 会自动读取第一行注释,并调度 Python 3.10 来解释执行该脚本,无需在命令行手动附带 -3.10 参数。

六、三种多版本调用方式对比与选型

在 Windows 开发日常中,除了官方 py.exe 外,开发者有时还会接触到直接输入绝对路径或创建虚拟环境。以下对三种常见方式进行对比:

Windows多版本Python共存时,怎么在命令行指定版本运行
图 3:Windows 命令行多版本 Python 调用方式横向对比
对比维度 方案一:官方 py.exe(推荐) 方案二:绝对路径 / 自定义别名 方案三:项目虚拟环境 (venv)
调用示例 py -3.10 main.py "C:\Python310\python.exe" main.py python main.py(激活环境后)
环境变量依赖 无(由 py 启动器集中路由) 高(依赖全路径或 PATH 前后位置) 激活后临时置顶当前环境
pip 管理安全性 高(配合 -m pip 明确无误) 中(容易漏写绝对路径导致串包) 极高(完全隔离在项目目录内部)
配置成本 零成本(官方安装自带) 繁琐(需手动维护脚本或别名) 每个项目需执行一次创建命令
推荐使用场景 日常快速测试、轻量脚本、单机调试 服务器固定批处理或自动化 CI 流程 团队协作项目、生产级软件开发

七、工程最佳实践:使用特定版本创建隔离虚拟环境

对于需要长期维护的实际项目,最稳健的做法并不是在全局环境中反复指定版本,而是使用 py.exe 为该项目创建专属的虚拟环境(venv)。

在项目根目录下执行:

# 指定使用 Python 3.10 在当前目录下创建名为 .venv 的虚拟环境
py -3.10 -m venv .venv

创建完成后,激活该虚拟环境:

# CMD 终端中执行
.venv\Scriptsctivate.bat

# PowerShell 终端中执行
.venv\Scripts\Activate.ps1

激活环境后,命令行提示符前会出现 (.venv) 标识。在当前激活状态下,直接输入 python 或 pip 都会严格锁定为创建时指定的 Python 3.10 版本,既不需要额外加版本参数,也保证了第三方包与系统全局环境彻底隔离。

八、常见疑难排查与避坑指南

Windows多版本Python共存时,怎么在命令行指定版本运行
图 4:多版本 Python 命令行指定决策树与排错指南

1. 在终端输入 python 弹出微软应用商店(Microsoft Store)

这是 Windows 10/11 上最常见的干扰项。系统默认内置了指向应用商店的快捷启动别名。如果 PATH 中没有找到有效的 Python,系统就会自动拦截命令并跳转商店。

排查与关闭方法:

  1. 打开 Windows「设置」->「应用」->「高级应用设置」->「应用执行别名」。
  2. 在列表中找到“应用安装程序 (python.exe)”与“应用安装程序 (python3.exe)”。
  3. 将这两项的开关全部切换为关闭(Off)。

2. 提示“不是内部或外部命令,也不是可运行的程序”

如果执行 py 命令时出现该提示,说明在安装 Python 时取消了默认勾选的“py launcher”。

解决方法:下载任意已安装版本的官方 Python 安装包(例如 python-3.10.x.exe),双击运行并选择 Modify(修改),在可选功能(Optional Features)页面中确保勾选 “py launcher” 及 “for all users”,点击继续安装即可快速补齐 py.exe。

3. 提示“Requested runtime ... is not installed”

当执行 py -3.9 时,如果启动器报错提示找不到该运行时,通常是因为:

  • 本地确实未安装该版本,可通过 py --list 查看当前识别出的具体版本;
  • 使用的是便携版(绿色免安装解压版),此类版本不会向 Windows 注册表写入注册信息,导致 py.exe 无法自动发现。针对此类环境,建议使用官方安装程序安装,或在 py.ini 中手动指定其绝对路径。

九、常用命令速查总结

操作目标 标准推荐命令 说明
列出所有已识别版本 py --list 或 py -0 星号 * 代表当前默认版本
指定版本运行脚本 py -3.10 script.py 替换为目标大版本+次版本
启动特定版本交互环境 py -3.12 直接进入 REPL
为特定版本安装依赖库 py -3.10 -m pip install <package> 避免直接输入裸跑 pip
区分 32/64 位执行 py -3.8-32 script.py 后缀显式指定架构
创建特定版本虚拟环境 py -3.10 -m venv .venv 工程项目开发首选隔离方式
相关专题:

本站声明

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

Python 相关产品和应用

全部下载

专题列表