Win10怎么同时安装多个版本的Python并切换使用
详细讲解在 Windows 10 系统中同时安装多个 Python 版本并优雅切换的规范方法。通过官方 Python Launcher (py.exe) 启动器调度、独立安装目录规范、环境变量配置以及项目级虚拟环境 (venv) 实现多版本零冲突共存。
在 Windows 10 系统中,同时安装并切换多个 Python 版本的官方标准方案,是依靠 Python 官方自带的 Python Launcher(即 py.exe),配合规范的安装目录规划与项目级虚拟环境(venv)。这种做法无需手动重命名任何 python.exe,也不会因为操作系统环境变量 PATH 的先后顺序错乱而产生冲突,能让每个版本保持独立完整,实现随时随地无缝切换。
一、核心机制:为什么在 Win10 下不推荐重命名 python.exe
很多刚接触 Python 的读者在尝试安装多个版本时(例如先装了 Python 3.8,后因新项目需要又装了 Python 3.11),往往习惯把安装目录下的 python.exe 强行重命名为 python38.exe 或 python311.exe。这种做法看似直观,但在实际工程中隐藏着严重的问题:
- 破坏 pip 启动存根(Launcher Stub):Windows 下的
pip.exe在编译生成时,其二进制文件头部硬编码了对应 Python 解释器的具体路径和可执行文件名(必须是python.exe)。一旦将其改名为python38.exe,后续执行 pip 命令时就会直接报错:Fatal error in launcher: Unable to create process using '"...python.exe"'。 - 影响 C 扩展编译与外部构建工具:部分需要本地编译的第三方库(如部分版本的 numpy、Cython 模块等)以及 IDE 解释器探测器,默认只认标准命名的
python.exe,重命名会导致扩展包安装失败。 - PATH 环境变量顺序竞争:如果两个版本的安装目录都加进了系统 PATH,系统在命令行中寻找
python时只会返回先匹配到的第一个目录,后面的版本会被完全遮蔽。
为了彻底解决多版本共存问题,Python 官方自 3.3 版本起就在 Windows 安装包中内置了 Python Launcher(py.exe)。它默认安装在 C:\Windows\py.exe 中,而该目录天然处于系统全局 PATH 顶部。py.exe 不会与任何 Python 运行时的核心文件混杂在一起,而是像一个“中央总机”,通过查询 Windows 注册表精确感知系统安装的所有 Python 版本,并根据用户传入的参数直接分发给目标解释器。
二、规范安装多版本 Python 的实操步骤
要在 Windows 10 上干净、稳定地安装多个 Python,必须严格遵循清晰的目录规划与选项配置。以下以同时安装 Python 3.11(日常主版本) 和 Python 3.8(旧项目维护版本) 为例进行演示。
步骤 1:关闭 Windows 10 的应用执行别名(极其重要)
Win10 默认启用了一项特性:当系统没有检测到 Python 时,在终端输入 python 或 python3 会自动唤起“微软应用商店(Microsoft Store)”诱导用户下载商店版 Python。这往往会导致环境路径混乱。在安装任何 Python 之前,请先关闭该别名:
- 点击桌面左下角“开始”菜单,打开“设置”。
- 依次进入“应用” -> “高级应用设置” -> “应用执行别名”(部分 Win10 版本在“应用和功能”页面底部)。
- 在列表中找到“应用安装程序 (python.exe)”和“应用安装程序 (python3.exe)”,将右侧开关全部切换为“关”。
步骤 2:下载官方 64 位安装包
访问 Python 官方网站(python.org),在 Windows 下载列表中分别获取对应版本的 64 位安装程序(Windows installer (64-bit)),例如 python-3.11.9-amd64.exe 与 python-3.8.10-amd64.exe。
步骤 3:安装第一个版本(如 Python 3.11,作为主要版本)
- 双击运行安装包,在首界面中:
- 勾选 “Use admin privileges when installing py.exe”(使用管理员权限安装启动器)。
- 勾选 “py launcher (for all users)”(为所有用户安装启动器,这是多版本调度的核心)。
- 不要直接点击“Install Now”,而是点击下方的 “Customize installation”(自定义安装)。
- 在“Optional Features”(可选功能)界面保持默认全选(Documentation、pip、tcl/tk、Python test suite、py launcher),点击 Next。
- 在“Advanced Options”(高级选项)界面:
- 勾选 “Install Python for all users”(推荐,便于写入系统注册表供 py 调度)。
- 在下方的 “Customize install location”(自定义安装位置)中,清空默认的深层 AppData 路径,输入简洁明确的路径,例如:
C:\Python\Python311(或者D:\Python\Python311,路径中严禁包含中文或空格)。
- 点击 Install 完成安装。安装结束界面如果提示“Disable path length limit”(禁用路径长度限制),建议点击确认。
步骤 4:安装第二个版本(如 Python 3.8,作为次要版本)
运行 Python 3.8 的安装程序,流程与上述基本一致,但有两处细节需要特别注意:
- 同样选择 Customize installation。
- 在高级选项中,将安装路径明确指定为独立文件夹:
C:\Python\Python38。 - 无需勾选“Add Python to PATH”:因为全局启动器
py.exe已经在步骤 3 中安装完成,不需要把 Python 3.8 的路径追加到系统 PATH 中,这样可以避免未来不同版本的python.exe在命令行中发生碰撞抢夺。
步骤 5:验证安装结果
打开 Windows 终端(PowerShell 或 CMD),运行以下命令查看系统已被识别的解释器列表:
py -0p
系统将输出类似如下的信息:
-3.11-64 * C:\Python\Python311\python.exe
-3.8-64 C:\Python\Python38\python.exe
* 号的条目(此处为 3.11-64),代表系统当前的默认运行版本。
三、命令行中自由切换与调用不同版本
只要安装了 py.exe,切换使用不同的 Python 版本就无需修改任何环境变量,只需在命令行中输入极短的参数即可。
1. 交互式终端切换
如果需要在命令行中临时进入某个版本的交互环境进行语法测试:
- 启动 Python 3.8 终端:
py -3.8 - 启动 Python 3.11 终端:
py -3.11 - 启动系统默认版本终端:
py
2. 运行指定的脚本文件
在执行具体脚本时,直接在 py 后面附加版本参数即可:
# 使用 Python 3.8 执行遗留项目脚本
py -3.8 legacy_app.py
# 使用 Python 3.11 执行新项目脚本
py -3.11 modern_app.py
3. 在脚本首行使用 Shebang(跨平台推荐)
如果你编写的 Python 脚本需要在 Linux 服务器和 Windows 之间共享,可以在脚本第一行写入 Shebang 行。Windows 的 py.exe 能够主动解析该行并自动选择版本:
#!python3.8
import sys
print(f"当前运行解释器版本为: {sys.version}")
保存后,在 Windows 终端中只需运行 py main.py,或者在资源管理器中直接双击该 .py 文件,py.exe 就会自动读取首行,唤起 Python 3.8 执行该脚本,而不需要你在命令行手动敲版本号。
4. 永久设置全局默认 Python 版本
如果日后你想把默认版本从 3.11 改成 3.8,不需要重新安装软件。官方提供了两种免环境变量的方式:
- 配置文件法(推荐):在当前用户主目录(即
C:\Users\你的用户名\)下新建一个名为py.ini的文本文件,写入以下内容:py.ini 内容
保存后,直接输入[defaults] python=3.8py或py script.py就会默认以 3.8 启动。若想恢复,只需把数值改回3.11或删除该配置即可。 - 环境变量法:在“系统属性 -> 环境变量”中添加一个名为
PY_PYTHON的变量,其值设置为3.8,同样能起到全局默认指定的作用。
四、独立管理各版本的 pip 与虚拟环境(venv)
安装了多个 Python 之后,最忌讳直接在终端盲目敲 pip install xxx。因为在未指定具体解释器时,直接运行 pip 无法明确知道它会把第三方库安装到哪个版本的 site-packages 目录下,极易导致“明明安装了模块,运行代码却报 ModuleNotFoundError”。
1. 为特定版本独立安装全局包的规范命令
正确的做法是使用 py -版本号 -m pip 语法,显式将 pip 模块绑定到具体版本的解释器上运行:
# 为 Python 3.8 安装 requests 和 pandas
py -3.8 -m pip install requests pandas
# 为 Python 3.11 安装 fastapi 和 uvicorn
py -3.11 -m pip install fastapi uvicorn
# 检查 Python 3.8 已经安装的包列表
py -3.8 -m pip list
2. 工程化最佳方案:使用虚拟环境(venv)彻底物理隔离
即便使用上述命令,多个项目如果共用同一个版本的全局环境,仍然可能因第三方库版本不兼容(例如项目 A 依赖 pydantic 1.x,项目 B 依赖 pydantic 2.x)而产生冲突。工程开发中最严谨的做法是:为每个项目创建独立的虚拟环境。
虚拟环境的完整操作流程如下:
# 1. 进入你的项目文件夹
cd D:\Projects\MyProject
# 2. 使用指定的 Python 3.8 版本创建专属虚拟环境文件夹 .venv38
py -3.8 -m venv .venv38
# 3. 激活虚拟环境
# 在 CMD 下运行:
.\.venv38\Scripts\activate.bat
# 或在 PowerShell 下运行 (需允许脚本执行权限):
.\.venv38\Scripts\Activate.ps1
# 4. 激活后终端前缀会出现环境名标识: (.venv38)
# 此时在此终端内直接运行 python 和 pip,会 100% 绑定当前环境,不会与外界产生任何干扰
pip install requests==2.28.0
python app.py
# 5. 退出当前虚拟环境
deactivate
如果在 PowerShell 中执行
Activate.ps1 时遇到 “无法加载文件...因为在此系统上禁止运行脚本” 错误,这是 Windows 默认的安全策略(Restricted)。只需以管理员身份打开 PowerShell,执行 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned,输入 Y 确认即可正常激活。
五、常见问题排查与维护清单
| 常见现象 / 报错 | 可能原因 | 针对性排查与解决办法 |
|---|---|---|
输入 python 弹窗跳到应用商店 |
Windows 10 应用执行别名未关闭,且当前未输入版本参数。 | 前往“设置 -> 应用 -> 应用执行别名”,将 python.exe 和 python3.exe 全部关闭;日常调用改用 py。 |
执行 py -0p 没有显示某个版本 |
该版本是通过 zip 解压缩的绿色免安装版,或者安装时未写入 Windows 注册表。 | 重新运行该版本的官方安装包,点击 Modify 或 Repair,勾选并确保写入注册表与安装 py launcher。 |
运行 pip 提示 Fatal error in launcher |
曾经手动重命名过安装目录下的 python.exe 文件。 |
把被改名的文件改回标准的 python.exe;更新 pip 时使用 py -3.x -m pip install --upgrade pip。 |
| VS Code / PyCharm 如何切换环境 | 现代 IDE 均内置了 Windows Python Launcher 探测协议。 | 在 VS Code 中按 Ctrl+Shift+P,输入 Python: Select Interpreter,列表会自动解析出所有已安装的 Python 及项目虚拟环境,点击即可一键切换。 |
总结
在 Windows 10 系统中同时使用多个 Python 版本的最佳实践可以概括为三条准则:
- 安装时目录规范、不过度修改 PATH:统一安装在形如
C:\Python\Python3xx的扁平路径中,不盲目将多个版本的可执行目录同时推入系统 PATH。 - 全局调用统一使用
py.exe:借助官方启动器的-3.x参数与py.ini配置文件,实现对任意版本的精准呼叫,绝不通过改名python.exe来区分版本。 - 依赖管理依托
venv:通过py -3.x -m venv <env_name>为各个项目建立隔离沙箱,彻底避免第三方包与 Python 解释器版本之间的依赖冲突。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









