多版本Python共存时怎么在cmd指定版本运行脚本

小岛来信
小岛来信
发布时间:2026-11-13 | 3人浏览过
原创

详细讲解在Windows命令提示符(cmd)中,当安装了多个Python版本时如何精准指定特定版本运行脚本。涵盖Python启动器(py命令)、绝对路径调用、虚拟环境管理及常见问题排查。

核心结论:在 Windows 命令提示符(cmd)中,解决多版本 Python 共存调用的最佳且标准方案是使用系统内置的 Python 启动器——即 py 命令(如 py -3.8 script.py 或 py -3.11 script.py)。此外,直接使用解释器的完整路径或为特定项目创建独立虚拟环境(venv),也是完全可靠且隔离度极高的方案。

设想一个非常普遍的开发情境:你的电脑上为了维护旧系统安装了 Python 3.8,同时为了学习新特性又安装了 Python 3.12。当你在 cmd 中输入 python main.py 时,系统只会根据系统环境变量 PATH 的排列次序,执行排在最前方的那个 Python 解释器。这就导致你明明希望用 3.8 跑脚本,系统却默认用 3.12 启动并抛出一堆兼容性报错。

遇到这种情况,很多初学者会盲目去把安装目录下的 python.exe 重命名为 python38.exe 或 python312.exe。这种做法不仅会破坏后续使用 pip 和内置模块的标准行为,还容易引发安装包路径紊乱。事实上,Windows 官方早已提供了极其规范的多版本调度工具和运行机制。

多版本Python共存时怎么在cmd指定版本运行脚本
图 1:多版本共存时的冲突原因与三大标准分流运行途径

方法一:使用 Windows 官方 Python 启动器(py 命令)

在安装官方 Python Windows 安装包时,安装器默认都会勾选安装“Python Launcher for Windows”。它的可执行文件是 py.exe,安装在系统全局路径(通常位于 C:\Windows\py.exe)。这意味着即便你完全不把任何 Python 目录加入环境变量 PATH,py 命令也可以在任何 cmd 窗口随时被唤醒。

1. 查看当前已安装并注册的所有 Python 版本

打开 cmd 窗口,输入以下命令:

py --list

或者查看更详细的安装路径:

py --list-paths

命令运行后,cmd 会列出检测到的全部版本,带有星号 * 的表示当前默认版本。示例输出如下:

-V:3.12 *        Python 3.12 (64-bit)
-V:3.8           Python 3.8 (64-bit)

2. 精准指定版本运行目标脚本

利用 -版本号 参数,你可以随心所欲调用任意已安装的解释器运行脚本:

:: 指定使用 Python 3.8 运行当前目录下的 test.py
py -3.8 test.py

:: 指定使用 Python 3.12 运行同一脚本
py -3.12 test.py

:: 如果只关心主版本,可以指定大版本号(会自动寻找该大版本下的最新安装版本)
py -3 test.py

3. 为指定版本安装和管理第三方依赖

多版本共存最容易踩坑的就是库安装混淆:使用 pip install xxx 常常装到了另一个版本的库文件夹里。利用 py -X.Y -m pip,能确保绝对安装到指定版本的标准库目录下:

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

:: 为 Python 3.12 安装 numpy 库
py -3.12 -m pip install numpy

:: 查看 Python 3.8 对应的已安装库列表
py -3.8 -m pip list
多版本Python共存时怎么在cmd指定版本运行脚本
图 2:使用 py 启动器从环境探测、依赖装载到脚本运行的标准化操作流程

4. 利用 Shebang 语法实现“写在代码里”的自动选择

如果你希望某个脚本无论谁在 Windows 上运行,都能自动以指定的版本执行,可以在 .py 脚本文件的第一行加入 Shebang 注释:

#!python3.8
import sys
print("当前运行版本:", sys.version)

当你拥有 Shebang 之后,在 cmd 中直接敲 py main.py,启动器就会解析首行指定的版本 python3.8,并自动唤醒该解释器运行,无需在命令行手动输入 -3.8。

方法二:使用完整绝对路径直接调用

在编写自动化任务计划、批处理脚本(.bat)或在其他程序中调用 Python 脚本时,依赖启动器或 PATH 可能存在环境变动的风险。此时,直接指定 Python 解释器的物理绝对路径是最具确定性的方式。

首先通过 cmd 获取对应 Python 的实际安装路径:

where python

或者查看官方默认安装路径。通常 Windows 上的标准安装位置为:

  • 当前用户独立安装:C:\Users\用户名\AppData\Local\Programs\Python\Python38\python.exe
  • 所有用户安装:C:\Program Files\Python38\python.exe

找到路径后,直接在 cmd 中将路径用英文双引号包裹(防止路径中的空格引发截断),后接脚本文件路径:

"C:\Users\Administrator\AppData\Local\Programs\Python\Python38\python.exe" C:\Workspace\my_script.py

避坑提示:绝对不要通过复制一份并将文件改名为 python38.exe 来方便调用。很多 Python 模块(尤其是安装编译型轮子或生成控制台脚本入口时)会硬编码检测名为 python.exe 的可执行文件。如果随意改名,往往会导致 pip 无法自举、部分 C 扩展模块报错等难以排查的问题。

方法三:工程化最佳实践——为项目创建 venv 虚拟环境

在严肃的开发流程中,直接使用全局 Python 运行脚本往往会导致依赖污染。多版本 Python 共存的最佳使用习惯,是在项目根目录下根据项目所需版本创建独立的虚拟环境(virtual environment)。

1. 指定基础 Python 版本创建虚拟环境

在 cmd 中进入你的项目目录,使用 py 命令指定版本并拉起内置的 venv 模块:

:: 进入项目目录
cd /d D:\Projects\MyLegacyApp

:: 使用 Python 3.8 创建名为 .venv38 的虚拟环境
py -3.8 -m venv .venv38

2. 激活虚拟环境并运行脚本

创建成功后,运行该环境目录下的激活脚本:

:: 执行激活脚本
call .venv38\Scripts\activate.bat

激活后,cmd 命令提示符前会出现 (.venv38) 标识。此时该命令行会话的环境变量已经被自动重定向,在这个窗口中直接运行 python 和 pip,就会自动锁定为当时所选的 Python 3.8 版本:

:: 此时无需任何参数,直接运行即为 3.8
python main.py

:: 安装依赖也会完全隔离在 .venv38 文件夹内部
pip install flask
多版本Python共存时怎么在cmd指定版本运行脚本
图 3:通过 py 命令为不同项目建立独立 venv 环境,实现彻底的版本隔离

常见排查与避坑要点

1. 为什么在 cmd 输入 python 会直接弹出微软应用商店(Microsoft Store)?

这是 Windows 10/11 的一个默认设定。当系统中未正确配置环境变量时,系统自带的“应用执行别名”会拦截 python.exe 命令并尝试引导你去商店下载。解决方法非常直接:

  • 打开 Windows 设置 -> 应用 -> 高级应用设置(或直接搜索“应用执行别名”)。
  • 在列表中找到“应用安装程序 (python.exe)”与“应用安装程序 (python3.exe)”,将它们的开关全部设为关闭。

2. 系统找不到 py 命令怎么办?

如果你在 cmd 中执行 py 提示“不是内部或外部命令”,说明在安装 Python 时取消勾选了“py launcher”。不需要重新卸载 Python,只需重新打开任一版本的官方安装包(python-3.x.x-amd64.exe),点击 Modify(修改),勾选 py launcher 并保持 for all users,点击下一步即可快速补全安装。

3. 如何排查当前命令行的优先级?

如果想知道当前 cmd 会话中某个命令究竟指向哪里的物理文件,可以使用 Windows 内置的 where 命令排查:

where python
where pip
where py

命令输出的行顺序即为当前 cmd 的查找优先级(第一行就是当前敲击命令直接生效的程序)。

总结与使用场景决策建议

为了让大家在面对不同任务时快速选出最高效的方式,我们将几种指定版本运行脚本的方案综合对比如下:

方案 典型调用命令 优点 适用场景
py 启动器(推荐) py -3.8 script.py 无需改 PATH、官方原生支持、支持 Shebang 与架构指定 日常开发、临时排查、多版本快速切换验证
绝对全路径 "C:\...\python.exe" script.py 零歧义、完全不受环境变量影响、确定性 100% Windows 计划任务、后台自动化脚本、生产批处理
虚拟环境(venv) call venv\Scripts\activate 接着 python script.py 项目级彻底隔离,依赖库与 Python 解释器一体化 团队协作项目、依赖复杂的生产项目、长期维护工程
修改文件名(不推荐) 改名为 python38.exe 看似直观但会破坏 pip、构建工具和部分 C 扩展模块 不建议在任何场景下使用
多版本Python共存时怎么在cmd指定版本运行脚本
图 4:多版本 Python 共存运行方案的综合决策矩阵与适用场景

本站声明

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

Python 相关产品和应用

全部下载

专题列表