Linux下怎么分别查看Python 2和Python 3版本
在Linux系统中分别查看Python 2和Python 3版本号的实用指南,涵盖独立命令探测、符号链接追溯、脚本内环境检测与常见异常排查。
在 Linux 操作系统中,很多发行版或服务器运维环境中都曾长期存在 Python 2 与 Python 3 共存的情况。若在终端里直接执行泛指的 python 命令,系统给出的版本往往取决于当前系统的符号链接配置或已激活的虚拟环境,极易引发混淆。要准确分别查看这两者的版本,最直接可靠的方式是在命令行中明确指定版本前缀:通过 python2 --version(或 python2 -V)查看 Python 2 的具体发行版本,通过 python3 --version(或 python3 -V)查看 Python 3 的具体发行版本。本文将详细讲解这两条命令的使用细节、符号链接追溯技巧、脚本内环境检测方法以及常见异常的排查逻辑。
一、使用版本专属命令分别检测
Linux 系统将 Python 2 和 Python 3 的主要解释器二进制文件分别命名为 python2 与 python3。使用带有大写参数 -V 或完整参数 --version 即可输出其确切的版本编号,这是区分二者最高效的方式。
1. 查看 Python 2 的版本
打开终端窗口,输入以下命令之一:
# 执行 Python 2 版本检测
python2 -V
# 或者使用长参数形式
python2 --version
# 示例输出:
Python 2.7.18
如果系统已安装 Python 2,终端会直接输出形如 Python 2.7.x 的字符串。在绝大多数 Linux 长期支持版本(如 CentOS 7)中,最终内置的稳定维护版本多为 2.7.18。
2. 查看 Python 3 的版本
同理,检测 Python 3 时需明确执行:
# 执行 Python 3 版本检测
python3 -V
# 或者使用长参数形式
python3 --version
# 示例输出:
Python 3.10.12
终端返回的版本号为主版本、次版本与微版本构成的三段式数字(例如 3.8.10、3.10.12 或 3.11.7),该输出直接证明当前调用的确系 Python 3 解释器。
3. 为什么不建议仅运行 python -V
直接执行 python -V 存在明显的不确定性:在旧版本系统(例如 Ubuntu 16.04、CentOS 7)中,默认别名通常绑定到 Python 2;而在现代主流发行版(如 Ubuntu 20.04+、Debian 11+)中,为了避免开发者误用已淘汰的 Python 2,系统往往默认不提供通用的 python 软链接,直接输入会出现 command not found;如果系统安装了 python-is-python3 工具包,则它又会映射到 Python 3。因此,在需要明确区分两者的场景下,必须使用带有主版本编号的独立命令。
二、追溯执行路径与符号链接
在 Linux 文件系统中,/usr/bin/python2 与 /usr/bin/python3 往往并非实际的二进制执行体,而是指向具体次版本文件的符号链接(Symbolic Link)。追溯其实际路径有助于进一步确认执行文件的来源。
1. 查找二进制程序路径
使用 which 或 type -a 命令可以列出当前终端环境下优先命中的命令路径:
# 查询 Python 2 与 Python 3 的命令文件位置
which python2
which python3
# 示例输出:
/usr/bin/python2
/usr/bin/python3
2. 解开符号链接层级
使用带有长格式参数的 ls -l 或 readlink -f,可以清晰查看到链接的真实终点:
# 查看链接所指向的具体文件
ls -l /usr/bin/python2
ls -l /usr/bin/python3
# 示例输出:
lrwxrwxrwx 1 root root 9 Mar 15 2021 /usr/bin/python2 -> python2.7
lrwxrwxrwx 1 root root 10 Jun 2 2023 /usr/bin/python3 -> python3.10
通过输出可以清楚发现:python2 指向了系统级的可执行文件 python2.7,而 python3 则指向了 python3.10。这表明系统内部在物理存储上是完全隔离的,分别调用各自的链接即互不干扰。
三、交互式终端与代码内获取详细构建信息
参数 -V 仅输出了版本号数字。若需要进一步确认该 Python 解释器的具体构建日期、GCC 编译器版本或在自动化脚本中做运行时版本判断,还可以采用以下两种方式。
1. 进入交互式命令行查看首行横幅
在终端直接执行 python2 或 python3,解释器在初始化完成后会打印详细欢迎标语:
# 启动 Python 3 交互终端
python3
# 启动后的首行横幅示例:
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
首行清晰显示了微版本号(3.10.12)、编译时间戳以及编译所采用的工具链(GCC 11.4.0)。确认完毕后输入 exit() 或按组合键 Ctrl + D 即可安全退出。
2. 通过 sys 模块在单行或脚本中提取
在自动化运维任务(如 Bash 脚本、CI/CD 构建流)中,需要将版本判断直接嵌入逻辑代码,可以使用内置的 sys 模块:
# 查看 Python 2 完整版本描述字符串
python2 -c "import sys; print(sys.version)"
# 查看 Python 3 结构化元组信息
python3 -c "import sys; print(sys.version_info)"
# 示例输出:
sys.version_info(major=3, minor=10, micro=12, releaselevel='final', serial=0)
sys.version_info 返回具名元组,通过 sys.version_info.major 即可获取主版本数字(2 或 3),便于程序做出针对性兼容分支选择。
四、常见异常场景与排查决策
在实际执行查看命令时,可能会遇到命令找不到或返回结果与预期不符的情况。通常对应以下几类具体场景:
1. 报错 "command not found"
当执行 python2 -V 返回:
bash: python2: command not found
这说明当前 Linux 系统并未安装 Python 2 环境,或者其二进制所在目录未包含在 $PATH 环境变量中。现代主流发行版(如 Ubuntu 20.04 及后续版本)在默认最小化安装中均已完全剔除 Python 2。同理,若 python3 也未找到,则需要通过发行版包管理器(如 apt install python3 或 yum install python3)进行基础安装。
2. 虚拟环境(Virtualenv 或 Conda)的干扰
如果当前终端提示符前存在类似 (myenv) 或 (base) 的前缀,说明已经激活了虚拟环境。激活脚本会将虚拟环境的 bin 目录前置到 $PATH 首位:
- 在此状态下运行
python -V,查看的是该虚拟环境中绑定的 Python 版本,而非宿主操作系统的全局默认版本。 - 如需强制查看系统级自带的 Python 版本,应跳过环境变量解析,直接使用绝对路径:
/usr/bin/python2 -V或/usr/bin/python3 -V。
重要提示:请勿为了图省事而在 /usr/bin/ 中随意创建将 python 强制链接到 python3 的软链接。在部分老旧的 RHEL/CentOS 系统中,系统包管理器 yum 深度依赖 Python 2 运行,随意修改全局 python 指向可能直接导致系统更新和软件安装命令报错崩溃。
五、常用查看方式与速查参考
为了便于日常快速查询与运维核对,下表对各类查看场景对应的操作命令及预期返回形式进行了汇总:
| 目标任务 | 推荐命令 | 典型输出示例 | 主要应用场景 |
|---|---|---|---|
| 明确查看 Python 2 | python2 -V |
Python 2.7.18 |
维护老旧脚本、CentOS 7 等历史系统日常巡检 |
| 明确查看 Python 3 | python3 -V |
Python 3.10.12 |
主流现代开发、依赖环境部署与环境确认 |
| 查看实际命令指向路径 | which python3 |
/usr/bin/python3 |
判断当前命令是否被别名、Conda 或虚拟环境劫持 |
| 解开最终物理文件 | readlink -f $(which python3) |
/usr/bin/python3.10 |
追踪底层符号链接,确认具体执行的 ELF 二进制 |
| 脚本内部获取版本结构 | python3 -c "import sys; print(sys.version_info)" |
sys.version_info(major=3, ...) |
Shell 脚本编写、构建流环境校验与版本断言 |
综上所述,在 Linux 系统下查看 Python 版本的核心准则在于“放弃通用命令,显式指定版本”。只要在日常操作中坚持使用 python2 -V 和 python3 -V,配合符号链接查询与 sys 模块深度检测,就能在任何复杂的 Linux 发行版环境中清晰、准确地掌控 Python 解释器的具体版本信息。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













