电脑同时安装Python 2和3,怎么指定运行Python 2.7

叶初
叶初
发布时间:2026-11-13| 5人浏览过
原创

详细讲解电脑同时安装Python 2和3时,如何通过官方启动器py、版本化命令、Shebang以及虚拟环境准确指定运行Python 2.7,并深入分析重命名python.exe的隐患与最佳实践。

电脑同时安装Python 2和3,怎么指定运行Python 2.7
图 0:多版本 Python 共存时的版本调度与定向指定

当一台电脑中同时安装了 Python 2(如 Python 2.7)和 Python 3(如 Python 3.10 或 3.11)时,直接在终端中输入通用命令 python,操作系统只会按环境变量 PATH 中的顺序执行最先匹配到的版本。要精准指定运行 Python 2.7,在 Windows 系统下推荐使用官方自带的 Python 启动器输入 py -2.7;在 macOS 和 Linux 系统下则直接执行自带版本后缀的 python2.7;需要安装依赖包时通过 py -2.7 -m pip 调用;若需长期维护特定项目,通过虚拟环境(Virtualenv)绑定 Python 2.7 是最稳健的隔离方案。

一、为什么直接输入 python 会“指向不明”

在探讨如何指定版本之前,首先需要明确操作系统的命令解析机制。无论是 Windows 的命令提示符(CMD)、PowerShell,还是 macOS 和 Linux 的 Bash、Zsh,当用户在控制台中敲下 python 并回车时,系统本身并不知道用户心中期望的是 Python 2 还是 Python 3。

系统的处理逻辑非常直接:它会依次读取系统环境变量 PATH 中所登记的每一个文件夹路径。如果 Python 3 的安装路径登记在前,系统找到 python.exe 后就会立即加载 Python 3;反之,若 Python 2.7 的路径排列在前,则默认唤起 Python 2.7。

因此,依赖无后缀的 python 命令本质上是不确定的。通过修改 PATH 顺序来切换版本不仅繁琐,而且容易导致某些依赖全局 Python 3 的现代工具异常。正确的解决思路是:绕过对默认名字的猜测,使用显式机制精确告诉系统本次需要调用的解释器版本。

电脑同时安装Python 2和3,怎么指定运行Python 2.7
图 1:Windows Python 启动器与 Unix 软链接调用分发模型对比

二、Windows 系统下的官方解决方案:Python 启动器(py)

在 Windows 环境下,官方为了解决多版本共存冲突,从 Python 3.3 起就内置了一个轻量级全局管理工具——Python Launcher for Windows(即可执行文件 py.exe)。

安装 Python 3 时,只要勾选了默认选项,py.exe 就会被放置在系统根目录(通常为 C:\Windows\py.exe)。由于 C:\Windows 始终位于系统 PATH 的最前端,因此无论后续安装了多少个不同版本的 Python,py 命令都可以在任何目录下直接执行。

1. 查看当前已安装并被系统识别的 Python 版本

在终端中输入以下命令,可以列出当前系统注册表中已识别的所有 Python 解释器:

执行命令:
py --list
终端输出示例: -V:3.11 * Python 3.11 (64-bit) -V:2.7 Python 2.7 (64-bit)

输出中带有星号(*)的表示当前默认版本。只要列表中出现了 -V:2.7,就说明系统启动器已顺利找到 Python 2.7 的安装位置。

2. 指定进入 Python 2.7 交互式终端

如果要进入 Python 2.7 的交互式环境(REPL),输入参数 -2.7 或 -2 即可:

执行命令:
py -2.7
终端输出示例: Python 2.7.18 (default, Apr 20 2020, 20:30:41) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>

3. 指定使用 Python 2.7 运行指定脚本

运行本地脚本时,将 -2.7 参数置于脚本文件名之前:

执行命令:
py -2.7 app.py

这样,app.py 就会绝对且确定地由 Python 2.7 解释器执行,不会受到系统中其他 Python 3 版本或环境变量顺序的影响。

4. 为 Python 2.7 安装三方库(避免与 Python 3 的 pip 混淆)

多版本共存时,最容易出现问题的环节是执行 pip install。如果直接敲 pip,库往往会被装入 Python 3 的 site-packages 中,导致 Python 2.7 运行时报 ImportError。

正确的做法是使用 -m 参数,显式将 pip 作为 Python 2.7 的子模块运行:

执行命令:
py -2.7 -m pip install requests==2.27.1

此命令会精准唤起属于 Python 2.7 安装目录下的 pip 工具,确保下载的二进制包或源码模块准确安装到 Python 2.7 的扩展库目录。

三、macOS 与 Linux 系统下的指定方式

类 Unix 系统(macOS 与 Linux)遵循 POSIX 命名规范,其软件包管理器在安装多版本软件时,天然具备良好的版本区分命名策略。

1. 直接调用具有完整版本号的命令名

在安装 Python 2.7 后,系统一般会在 /usr/bin、/usr/local/bin 或用户专属路径下建立明确带有小版本号的软链接:

查看 Python 2.7 绝对位置:
which python2.7
终端输出示例: /usr/local/bin/python2.7

此时,运行交互环境或执行脚本只需要带上完整后缀:

指定运行脚本与包管理:
python2.7 script.py
python2.7 -m pip install <package_name>

2. 若找不到 python2.7 链接的处理方法

如果系统只安装了 Python 2.7 核心文件,但环境变量中未建立快捷名字,可以通过建立符号链接(Symlink)来规范化调用:

sudo ln -s /usr/local/Cellar/python@2/2.7.18/bin/python2.7 /usr/local/bin/python2.7

建立后,执行 python2.7 --version 即可确认生效。

电脑同时安装Python 2和3,怎么指定运行Python 2.7
图 2:跨平台指定运行 Python 2.7 的标准操作与验证流程

四、深入辨析:把 python.exe 改名为 python2.exe,为什么看似合理却隐患重重?

在很多旧的技术讨论或非官方教程中,经常能看到一种做法:“进入 Python 2.7 的安装目录(如 C:\Python27),把 python.exe 复制或重命名为 python2.exe,把 Python 3 目录下的改名为 python3.exe”。

这种说法为什么看似合理?
在早期的 Windows 系统中(Python 3.3 以前),官方尚未推出 py 启动器。开发者为了在同一个 CMD 窗口里敲 python2 就能进 2.7、敲 python3 就能进 3.x,手动重命名确实能在表面上快速解决终端命令冲突。因此在特定历史阶段,它被许多人当作一种应急技巧传播。

为什么这种做法在今天需要被修正?
直接更改或复制解释器主程序二进制文件,会破坏 Python 生态工具链的默认预期,带来一系列连锁隐患:

  • 破坏 pip 启动脚本:安装在 Scripts 目录下的 pip.exe 或 pip2.exe,其文件内部预设的解释器路径是硬编码寻找 python.exe。一旦原名被修改,执行 pip 命令时常会抛出 Fatal error in launcher: Unable to create process using '"...\python.exe"' 的错误。
  • 影响 C 扩展编译与 wheel 安装:部分包含 C/C++ 扩展的第三方库在执行安装构建时,会直接从注册表或标准路径探查 python.exe。缺失标准文件会导致编译流程在配置探测阶段直接报错中断。
  • 导致 Windows 卸载或修补失败:后续如果要通过官方安装包卸载或修补 Python 2.7,安装程序会校验主执行文件的哈希与存在性,文件改名容易引发安装程序挂起或报错退出。

结论与建议:保持 Python 2.7 原有安装目录下的 python.exe 文件名完整不动;使用 Windows 原生自带的 py -2.7 启动机制,既完全满足命令行按需指定的诉求,又绝不会破坏内部调用链与工具链生态。

电脑同时安装Python 2和3,怎么指定运行Python 2.7
图 3:手动改名方案与官方调度方案的技术机理与兼容性对比

五、进阶工程化实践:脚本声明与独立虚拟环境

在团队协作或自动化部署中,除了在命令行前缀中手动输入版本参数外,还有两项能够减少人工失误的工程实践:Shebang 声明与虚拟环境隔离。

1. 在脚本首行添加 Shebang(解释器指路标记)

在需要由 Python 2.7 执行的 .py 源码文件第一行,写入以下声明:

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-

import sys

def main():
    print("当前运行版本:", sys.version)

if __name__ == "__main__":
    main()

这项设置的优势在于:

  • 在 Linux / macOS 下:配合 chmod +x script.py 赋予执行权限后,无需键入解释器前缀,直接输入 ./script.py 即可由系统内核自动调用 Python 2.7 执行。
  • 在 Windows 下:官方 py 启动器拥有专门的代码解析器。如果首行包含上述 Shebang 声明,即便在控制台只输入 py script.py(未带版本参数),启动器也会主动读取第一行,并自动调起 Python 2.7 运行。

2. 使用 virtualenv 创建专用的 Python 2.7 独立环境

如果需要维护一个庞大且依赖繁琐的历史 Python 2 项目,最好的办法是为其创建隔离的虚拟环境。这样项目内的所有依赖包都不会和系统全局环境相互干扰。

创建虚拟环境指令:
# Windows 环境下指定 2.7 解释器创建:
py -2.7 -m virtualenv venv27

# macOS / Linux 环境下指定 2.7 解释器创建:
virtualenv -p python2.7 venv27

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

激活虚拟环境:
# Windows (CMD):
venv27\Scriptsctivate.bat

# macOS / Linux:
source venv27/bin/activate

在激活状态下,当前终端会话的环境变量已经被虚拟环境接管。此时无需再输入任何 -2.7 前缀,直接输入标准的 python 和 pip,调用的全部是该虚拟环境中绑定的 Python 2.7 实例。

电脑同时安装Python 2和3,怎么指定运行Python 2.7
图 4:全场景指定运行 Python 2.7 命令速查卡片

六、验证与排查清单

完成配置后,可以通过一段微型测试脚本,确认当前代码确实是在 Python 2.7 的独立环境下运转,并验证关键路径:

一键验证脚本(可在终端直接以单行命令执行):
# Windows 下验证:
py -2.7 -c "import sys; print('版本号:', sys.version); print('解释器路径:', sys.executable)"

# macOS / Linux 下验证:
python2.7 -c "import sys; print('版本号:', sys.version); print('解释器路径:', sys.executable)"
正确输出示例: 版本号: 2.7.18 (default, Apr 20 2020, 20:30:41) [MSC v.1500 64 bit (AMD64)] 解释器路径: C:\Python27\python.exe

只要输出的 sys.version 以 2.7 开头,且 sys.executable 指向预期的 Python 2 安装路径,即证明调用准确无误。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。