电脑同时安装Python 2和3时怎么查看指定版本
当电脑同时安装了Python 2和Python 3时,如何准确查看和区分指定版本?本文详细介绍Windows、macOS与Linux下的版本查看命令、py启动器用法、物理路径核验与运行时元数据排查技巧。
当电脑同时安装了 Python 2 和 Python 3 时,直接在终端中运行通用命令 python --version,只能显示系统环境变量 PATH 中排在最前面的那个默认版本,无法兼顾另一个版本的核验。要精准查看指定版本的具体号数与解释器信息,Windows 系统推荐使用官方自带的启动器命令 py -2 -V 与 py -3 -V,而 macOS 和 Linux 系统则应使用带有主版本后缀的独立命令 python2 -V 与 python3 -V。结合物理路径定位与运行时提取命令,即可彻底理清双版本的共存状态。
一、Windows 环境下的查看方法:py 启动器与明确路径
在 Windows 环境下,原生安装的 Python 2 和 Python 3 通常都会将各自的可执行文件命名为 python.exe。如果直接在命令提示符(CMD)或 PowerShell 中执行 python,操作系统只会按环境变量 PATH 中注册的先后顺序启动第一个匹配到的程序,另一个版本就处于“被遮蔽”状态。
解决这一问题的标准做法是使用 Windows 平台自带的 Python Launcher(py.exe 启动器)。只要在安装 Python 3 时勾选了“py launcher”选项(默认勾选),该启动器就会被放置在系统的标准系统目录(如 C:\Windows\py.exe)中,它能独立读取注册表中登记的所有 Python 版本,并按参数分流派发任务。
1. 分别查看 Python 2 与 Python 3 的版本号
打开 CMD 或 PowerShell,直接执行以下参数化指令:
py -2 -V
py -3 -V
示例输出
Python 3.11.9
参数 -2 和 -3 分别指示启动器定位本地已安装的最高版 Python 2 与最高版 Python 3,后面的 -V(大写)或 --version 则是告知解释器打印版本字符串并退出。
2. 列出系统识别到的所有 Python 版本与路径
如果电脑中不仅安装了 Python 2.7,还安装了多个 Python 3 的小版本(例如同时有 3.8 和 3.11),可以使用 py -0p 命令进行全量盘点:
py -0p
示例输出
-3.11-64 * C:\Users\Username\AppData\Local\Programs\Python\Python311\python.exe
-3.8-64 C:\Program Files\Python38\python.exe
-2.7-64 C:\Python27\python.exe
在输出结果中,带有星号 * 的项代表当前未加版本参数时 py 命令默认调用的版本;每一行不仅列出了主版本和次版本号,还标明了是 32 位还是 64 位架构,以及解释器所处的绝对物理安装路径。
3. 未安装启动器时的绝对路径查看法
如果由于特定精简版系统或绿色免安装版导致本地没有 py.exe,也可以直接输入解释器的完整物理路径来查看指定版本:
"C:\Python27\python.exe" -V
"C:\Program Files\Python311\python.exe" -V
这种方法绕过了所有环境变量与启动器的解析机制,直接由可执行文件本身给出响应,适合作为应急验证手段。
二、macOS 与 Linux 环境下的查看方法:版本化二进制别名
在 macOS 和主流 Linux 发行版(如 Ubuntu、Debian、CentOS)中,操作系统的包管理器和标准构建工具在设计之初就考虑到了版本兼容性问题。系统通常不会将 Python 2 和 Python 3 都映射到同一个可执行文件名上,而是预设了带有版本后缀的二进制别名或符号链接。
1. 分别查看两个主版本
在类 Unix 系统的终端中,分别运行带有主版本号后缀的专属指令:
python2 --version
python3 --version
示例输出
Python 3.10.12
这种命名方式使得两个版本的调用完全解耦,彼此不会发生覆盖。
2. 确认命令对应的实际物理路径与软链接目标
由于 macOS 和 Linux 下可能存在系统自带 Python、Homebrew 安装版本或 Conda 环境,有时需要进一步确认终端中敲下的 python2 或 python3 到底指向系统目录的哪个文件。可以使用 which 和 ls -l 命令进行溯源:
which python2
which python3
示例输出
/usr/local/bin/python3
通过追踪符号链接,例如执行 ls -l /usr/local/bin/python3,可以直观看到它指向的底层真实路径(例如 ../Cellar/python@3.10/3.10.12/bin/python3.10)。
三、深入确认:在运行时环境中提取完整元数据
仅凭 -V 参数输出的版本号字符串(例如 Python 3.10.12),在复杂工程场景下往往不够充分。例如当本地存在多个微版本、虚拟环境或交叉编译环境时,读者往往无法确认该命令调用的是 64 位还是 32 位程序,也无法确定当前运行时具体加载了哪个目录下的标准库。
直接通过单行命令调用 Python 内置的 sys 模块,可以获得确凿的运行时信息:
# 查看 Python 2 的运行时路径与构建信息
python2 -c "import sys; print(sys.version); print(sys.executable)"
# 查看 Python 3 的运行时路径与构建信息
python3 -c "import sys; print(sys.version); print(sys.executable)"
示例输出
/usr/bin/python2.7
3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]
/usr/bin/python3.10
sys.version:包含详细的小版本号、系统平台编译环境(如 MSC 对应 Windows Visual Studio 编译器,GCC/Clang 对应类 Unix 环境)以及生成日期。sys.executable:真实启动该进程的二进制解释器绝对路径。无论外层包装了多少层别名(alias)或软链接,此处打印的都是真实执行体。
四、常见排查与异常处理
在双版本实际检查过程中,经常会遇到命令报错或显示结果与预期不符的情况。以下是两种最典型的问题与排查思路:
1. 提示“'python2' 不是内部或外部命令”或“command not found”
原因分析:在 Windows 官方安装包中,可执行文件默认都命名为 python.exe,并不自带 python2.exe 这个文件;如果用户没有在 PATH 中配置对应路径,或者没有手动创建别名,直接输入 python2 就会报错。而在类 Unix 系统中,若提示未找到命令,通常表明 Python 2 根本未被安装,或只安装了 Python 3。
解决策略:在 Windows 下应回归使用 py -2 -V;若执意要使用 python2 命令,可以在 Python 2 的安装目录(如 C:\Python27)中将 python.exe 复制一份并重命名为 python2.exe,并将该目录追加到系统环境变量 PATH 中。
2. 执行通用命令 python -V 时显示的版本并非预期
原因分析:操作系统在环境变量 PATH 中查找程序时采用“从前向后匹配,命中即停”的规则。如果 Python 2 的安装路径排在 Python 3 之前,那么 python 默认就会调用 Python 2,反之亦然。
确认方法:在 Windows 下执行 where python,或在类 Unix 环境下执行 which -a python。该命令会自上而下按搜索顺序列出所有同名可执行文件,排在第一行的就是当前默认生效的文件。
五、查看与核对总结
电脑同时安装 Python 2 和 Python 3 时,核心原则是避免依赖含义模糊的单一 python 命令。在日常操作与脚本编写中:
- Windows 平台:优先使用系统级启动器
py -2 -V与py -3 -V,配合py -0p掌握全局安装拓扑。 - macOS 与 Linux 平台:明确指代主版本,使用
python2 -V与python3 -V,结合which检查软链接指向。 - 深度确认与排错:借助
python -c "import sys; print(sys.executable)"直接提取可执行文件物理路径,消除多环境并存带来的歧义。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









