Win10中同时安装Python 2和3时怎么配置环境变量不冲突
python.exe 和 pip.exe),而系统环境变量 PATH 会自顶向下优先匹配先出现的程序。彻底解决冲突的可靠路径是:保留系统安装目录完整性,将各版本根目录与 Scripts 目录规范写入 PATH,通过创建独立的版本别名副本(python2.exe 与 python3.exe)配合关闭 Win10 自带的应用别名劫持,并统一使用 python -m pip 规范进行依赖安装。
一、冲突发生的根本原因:Windows PATH 的检索机制
当我们在 Windows 10 的命令提示符(CMD)或 PowerShell 中敲入 python 并回车时,操作系统的可执行程序检索逻辑非常固定:首先检查当前工作目录下是否存在该程序,若不存在,则按照系统环境变量 Path 中预设的目录列表,从上到下逐行搜索,直到找到第一个名为 python.exe 的文件并立即执行,随后的所有同名文件都会被彻底忽略。
Python 2.7 与 Python 3.x 在默认安装后,其主程序名称均为 python.exe,包管理工具均为 pip.exe。若直接将两个版本的路径同时塞入 PATH 列表中,无论如何调整,排在前面的版本总是会遮蔽排在后面的版本。此外,Windows 10 默认启用了“应用执行别名”,会在用户 PATH 最前端插入一个指向微软应用商店(Microsoft Store)的 0KB 占位引导程序,这也是许多用户未配置前键入 python 却弹出商店窗口的诱因。
二、主流共存方案对比:py 启动器与执行体分化
针对 Windows 下的双版本共存,业界有两种成熟的工程实践方案。理解这两者的工作机制,可以帮助我们根据具体的开发需求选择最合适的方式:
- 方案一:Windows 专用 Python 启动器(py.exe)。Python 官方从 3.3 版本开始为 Windows 平台引入了
py.exe启动器,默认安装在C:\Windows\py.exe。由于该目录天生存在于系统 PATH 中,用户无需修改环境变量,只需通过py -2启动 Python 2,通过py -3启动 Python 3。此外,它能自动解析脚本首行的 Shebang(如#!python2)。 - 方案二:执行体副本重命名法(保留原文件 + 派生别名)。在安装目录下保留原生的
python.exe,分别额外复制一份并重命名为python2.exe与python3.exe。这种方式不仅符合绝大多数开发人员在 Linux/macOS 上的输入习惯,而且对很多写死调用python2或python3的第三方自动化脚本具有极好的兼容性。
三、实操四步法:无冲突环境配置完整流程
为了兼顾跨平台命令习惯与日常开发工具的自动识别,本文推荐采用“保留原执行体 + 创建副本别名 + 规范 PATH 写入 + 模块化 pip”的组合方案。以下为完整的操作步骤:
第 1 步:生成带版本号的执行体副本(关键:不要直接重命名)
打开文件资源管理器,定位到两个 Python 的实际安装目录。典型的安装路径如下:
- Python 2 默认路径:
C:\Python27\ - Python 3 常用路径:
C:\Users\用户名\AppData\Local\Programs\Python\Python310\或C:\Program Files\Python310\
在 C:\Python27\ 目录下,找到 python.exe,执行“复制”并“粘贴在当前目录”,将生成的新文件重命名为 python2.exe。切勿直接将原本的 python.exe 改名。同理,进入 Python 3 的安装目录,复制 python.exe 并命名为 python3.exe。
这是因为 pip 内部的脚本解析器以及许多第三方工具在执行时,会直接硬编码查找当前环境下的 python.exe。若将原文件直接改名,未来调用该环境下的 pip 安装包时,系统会报出类似 Fatal error in launcher: Unable to create process using '"...python.exe"' 的致命错误。
第 2 步:彻底关闭 Win10 的“管理应用执行别名”
Windows 10 引入了针对微软应用商店的别名机制,当系统中找不到对应程序或者路径排布在后时,会自动跳转到商店页面提示下载 Python。这一拦截必须手动关闭:
- 点击 Windows“开始”菜单,选择“设置”(齿轮图标),进入“应用”。
- 在左侧栏选择“应用和功能”,在右侧相关设置区域点击“应用执行别名”。
- 在弹出的列表中,向下滚动找到“应用安装程序(python.exe)”和“应用安装程序(python3.exe)”,将它们的开关全部切换为“关”。
第 3 步:配置系统环境变量 PATH
按 Win + R 快捷键打开运行窗口,输入 sysdm.cpl 回车,快速调出“系统属性”面板:
- 切换到“高级”选项卡,点击右下角的“环境变量”按钮。
- 在“系统变量”(对这台电脑所有用户生效)或“用户变量”(仅对当前用户生效)中找到名为
Path的变量,选中后点击“编辑”。 - 在编辑列表页面中,使用“新建”按钮添加以下 4 条路径(具体路径请根据本机实际安装目录填写):
C:\Python310\ C:\Python310\Scripts\ C:\Python27\ C:\Python27\Scripts\ - 建议将 Python 3 的两条路径移动到 Python 2 之上。这样配置后,直接输入
python默认进入现代的 Python 3,而输入python2则精确唤起 Python 2。 - 依次点击“确定”保存所有窗口。
第 4 步:pip 依赖隔离与正确调用姿势
在双版本共存时,直接在终端敲入 pip install xxx 是最容易导致依赖混乱的操作,因为该命令只能唤醒排在 PATH 最前方的那个 pip。正确的做法是使用 Python 的 -m 模块调用参数,直接由具体的解释器驱动其配套的 pip:
# 为 Python 2 安装依赖包
python2 -m pip install requests
# 为 Python 3 安装依赖包
python3 -m pip install requests
# 升级各自环境的 pip 自身
python2 -m pip install --upgrade pip
python3 -m pip install --upgrade pip
四、结果验证与排错速查
环境变量修改完成后,必须重新打开一个新的 CMD 或 PowerShell 窗口(旧窗口不会刷新已载入的环境变量)。在终端中依次输入以下验证指令:
| 输入验证命令 | 预期返回结果示例 | 功能验证说明 |
|---|---|---|
python -V |
Python 3.10.11 |
验证默认解释器指向(由 PATH 排序首位决定) |
python2 -V |
Python 2.7.18 |
验证 Python 2 独立副本调用是否成功 |
python3 -V |
Python 3.10.11 |
验证 Python 3 独立副本调用是否成功 |
python2 -m pip -V |
pip 20.3.4 from C:\Python27\lib\... (python 2.7) |
验证 Python 2 模块化包管理器绑定 |
python3 -m pip -V |
pip 23.2.1 from C:\Python310\lib\... (python 3.10) |
验证 Python 3 模块化包管理器绑定 |
py -2 -V / py -3 -V |
分别正确输出对应版本 | 验证官方 py 启动器是否处于可用状态 |
五、总结
在 Windows 10 环境下让 Python 2 与 Python 3 长期和谐共存,核心就在于“化整为零、按名分配、模块隔离”:
- 通过生成
python2.exe与python3.exe的物理副本,在保证原有解释器与内部工具链(如 pip)不被破坏的前提下,赋予用户明确的终端显式调用能力; - 关闭 Windows 10 自带的应用商店别名劫持,防止命令被系统机制拦截;
- 将两个版本的根目录及 Scripts 目录共 4 条路径规范写入 PATH,由上层优先权决定默认
python命令归属; - 在后续的项目管理与包安装中,始终坚持使用
python2 -m pip和python3 -m pip,从源头上杜绝依赖包错装、混装的问题。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













