多版本共存时怎么分别查看Python 2和Python 3的版本

顾星河
顾星河
发布时间:2026-11-13 | 5人浏览过
原创

详细介绍在Linux、macOS和Windows多版本Python共存环境下,如何分别查看Python 2和Python 3的具体版本,剖析底层寻址机制、代码内诊断及路径防混淆方案。

核心方法概括:当系统中同时安装了 Python 2 与 Python 3 时,直接运行 python -V 只会展示系统当前默认的那一个版本。想要分别独立查验两者,关键在于使用带有主版本号后缀的专属命令或系统启动器。在 Linux 与 macOS 终端中,分别执行 python2 --version 与 python3 --version;在 Windows 系统中,推荐使用系统级的 Python Launcher 启动器,分别执行 py -2 --version 与 py -3 --version。
多版本共存时怎么分别查看Python 2和Python 3的版本
图 1:多版本共存调用分流架构与指令定向映射示意图

一、为什么直接执行 python 查看无法满足需求

在多版本共存的环境中,终端输入 python 时,系统只能依据环境变量 PATH 的先后排列,或者根目录下 /usr/bin/python 符号链接的绑定目标,去匹配唯一的一个二进制可执行文件。因此,单纯执行:

执行命令:
python --version
终端可能出现的单一回显示例:
Python 2.7.18

这一操作只能告诉我们“当前默认的全局别名指向谁”,却无法证实系统中是否同时存在另一版本的 Python,也无法获知另一版本的具体次版本号与补丁修订版本(如 3.11.8 还是 3.12.2)。为了彻底解决这一遮蔽问题,必须根据所在操作系统的机制,使用能明确解耦两个运行时的查验命令。

二、Linux 与 macOS 系统的分流查看方法

类 Unix 操作系统(包括各类 Linux 发行版与 macOS)遵循 POSIX 命名规范。当同时安装了 Python 2 和 Python 3 时,包管理器或安装程序会自动在可执行路径下生成带有数字后缀的软链接。

1. 分别执行版本探查命令

在终端窗口中分别输入以下命令,参数 -V(大写)与 --version 效果完全等价:

① 查看 Python 2 的精确版本:
python2 --version
示例输出:
Python 2.7.18
② 查看 Python 3 的精确版本:
python3 --version
示例输出:
Python 3.11.8

2. 细分版本号的显式查询

如果系统中甚至安装了多个 Python 3 的次级小版本(例如 Python 3.9 与 Python 3.11 共存),还可以进一步把命令精确到一位小数:

python3.9 --version
python3.11 --version

系统会直接调用对应版本的二进制文件输出信息,互不干扰。

多版本共存时怎么分别查看Python 2和Python 3的版本
图 2:跨平台分别查验 Python 2 与 Python 3 的操作判定链

三、Windows 环境下借助 Python Launcher 分别查看

Windows 系统的命令行机制与 Linux 不同。默认情况下,Windows 的安装程序直接生成 python.exe,并不总是自动创建名为 python2.exe 或 python3.exe 的副本。如果在没有特殊配置的 Windows 命令行中直接输入 python2,通常会遇到 'python2' 不是内部或外部命令 的报错。

1. 使用官方推荐的 py 启动器(PEP 397)

从 Python 3.3 开始,Windows 版官方安装包默认会引入一个名为 Python Launcher(即 py.exe)的系统级工具,它被放置在 C:\Windows\py.exe,天然处于系统环境变量最顶层。它是 Windows 下多版本共存管理的利器。

① 查看 Python 2 版本:
py -2 --version
示例输出:
Python 2.7.18
② 查看 Python 3 版本:
py -3 --version
示例输出:
Python 3.11.8

2. 一键列出本机所有已安装与注册的版本

py 启动器还提供了一个非常实用的枚举开关 -0(或 --list),它会扫描 Windows 注册表并汇总全部已安装的 Python 版本,还会用星号 * 标注当前默认解释器:

执行版本清单扫描命令:
py -0
示例输出:
Installed Pythons found by py Launcher for Windows -3.11-64 * -2.7-64
未安装 py 启动器时的备选方案

如果 Windows 上未安装该启动器,且两个版本的可执行文件均命名为 python.exe,则需要通过完整安装路径直接执行版本查验,例如:

C:\Python27\python.exe -V
C:\Users\username\AppData\Local\Programs\Python\Python311\python.exe -V
多版本共存时怎么分别查看Python 2和Python 3的版本
图 3:Linux/macOS 符号链接与 Windows py 启动器寻址机制对比

四、在代码内部与单行命令中查看版本详情

有时命令行的别名设置可能与预期不符。为了保证脚本在实际运行中拿到 100% 真实的解释器环境,可以通过 Python 内置的 sys 模块,直接在终端中以单行代码形式输出详尽的元数据。

1. 一行代码快速打印完整版本字串

利用参数 -c 直接将代码传给解释器,不需要先进入交互模式:

查看 Python 2 的运行时版本详情:
python2 -c "import sys; print(sys.version)"
示例输出:
2.7.18 (default, Mar 8 2021, 13:02:45) [GCC 9.3.0]
查看 Python 3 的运行时版本详情:
python3 -c "import sys; print(sys.version)"
示例输出:
3.11.8 (main, Feb 12 2024, 14:50:05) [Clang 15.0.0 (clang-1500.1.0.2.5)]

2. 结构化版本信息 sys.version_info

如果需要在自动化脚本中依据版本进行逻辑分流,使用 sys.version_info 比解析字符串更为稳健。它将主版本号(major)、次版本号(minor)和修订号(micro)封装为元组:

python2 -c "import sys; print(sys.version_info)"
# 示例输出:sys.version_info(major=2, minor=7, micro=18, releaselevel='final', serial=0)

python3 -c "import sys; print(sys.version_info)"
# 示例输出:sys.version_info(major=3, minor=11, micro=8, releaselevel='final', serial=0)

在脚本开发中,只需通过 sys.version_info[0] == 2 或 sys.version_info.major == 3 即可编写双版本兼容的判断逻辑。

多版本共存时怎么分别查看Python 2和Python 3的版本
图 4:sys 模块内部版本元数据与解释器属性剖析

五、排除混淆:定位真实可执行文件路径

在复杂的开发机上,虚拟环境、Conda、Homebrew 或用户自定义的 alias 经常会导致输入的命令并没有指向预期的二进制实体。因此,查出版本号后,建议通过以下步骤核实该版本的物理落地位置。

1. 类 Unix 平台下定位实体路径

使用 which 命令可以查看终端当前解析的具体路径,再配合 ls -l 即可清晰看到软链接的最终指向:

which python2
# 示例输出:/usr/bin/python2

which python3
# 示例输出:/usr/local/bin/python3

ls -l $(which python2)
# 示例输出:lrwxrwxrwx 1 root root 9 Apr 16  2021 /usr/bin/python2 -> python2.7

2. Windows 平台下定位实体路径

Windows 提供了类似于 Unix 的 where 命令,可一次性展示 PATH 中所有匹配项的先后顺序:

where python
示例输出:
C:\Users\username\AppData\Local\Programs\Python\Python311\python.exe C:\Python27\python.exe

排在首行的路径即为直接输入 python 时默认执行的目标。

3. 终极验证:利用 sys.executable 验证物理落地

无论命令行被多少层 alias 或环境包装,解释器自身始终知晓自己的磁盘实体所在:

python2 -c "import sys; print(sys.executable)"
python3 -c "import sys; print(sys.executable)"

只要确认打印出的绝对路径对应正确的安装目录,就能够确保版本查看与运行调用的绝对可靠。

多版本共存时怎么分别查看Python 2和Python 3的版本
图 5:多版本共存场景查看与故障排查速查决策矩阵

六、常见问题排查与速查决策

1. 为什么输入 python2 提示 command not found?

在很多现代 Linux 发行版(如 Ubuntu 20.04+)或 macOS Monterey 及以上版本中,系统已经完全废弃并移除了 Python 2。如果在安装完 Python 3 的新系统上执行 python2 -V 报错,说明当前主机根本未安装 Python 2 环境,而非别名配置错误。

2. 为什么在 Windows 修改了环境变量却不见生效?

环境变量的修改只对修改之后新打开的命令行窗口生效,已经打开的 CMD 或 PowerShell 终端仍保留旧的缓存。此外,如果安装了 Windows 应用商店的 Python 桩程序(0KB 别名文件),需要在“Windows 设置 -> 应用程序执行别名”中关闭对应的 Python 开关,避免其拦截真实命令。

3. 脚本文件的 Shebang 声明如何确保版本正确?

在多版本共存的 Linux/macOS 环境下编写脚本时,脚本首行的 Shebang(释伴)切勿写成泛指的 #!/usr/bin/env python。若需要指定 Python 2 执行,请明确写为:

#!/usr/bin/env python2

若需要使用 Python 3,则明确写为:

#!/usr/bin/env python3

这样即使通过 ./script.py 直接运行,操作系统内核也能准确唤起目标版本的解释器。

本站声明

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

Python 相关产品和应用

全部下载

专题列表