在 Python 中,判断当前 Python 版号的方法主要有以下几种,适用于不同场景(如脚本、代码库、命令行等)。

使用 sys 模块(推荐,适用于代码内部)
这是最常用和推荐的方法,特别是在 Python 脚本或代码库中需要根据版本执行不同逻辑时。
import sys
# 获取主版本号(3, 2)
major_version = sys.version_info.major
# 获取次版本号(10, 9)
minor_version = sys.version_info.minor
# 获取完整的版本号信息(是一个元组,如 (3, 10, 6, 'final', 0))
full_version_info = sys.version_info
# 获取详细的版本字符串('3.10.6 (main, Mar 10 2025, 10:55:28) [GCC 11.3.0]')
version_string = sys.version
print(f"主版本号: {major_version}")
print(f"次版本号: {minor_version}")
print(f"版本信息元组: {full_version_info}")
print(f"版本字符串: {version_string}")
优点:
sys.version_info是一个命名元组,可以直接通过.major,.minor,.micro等属性访问,非常直观和方便。- 适合在
if语句中进行版本判断。
示例:根据版本执行不同代码
import sys
if sys.version_info >= (3, 7):
print("Python 3.7 或更高版本,可以使用 f-string 的新特性。")
# 使用变量名作为 f-string 的表达式
name = "Alice"
print(f"{name=}")
else:
print("Python 版本低于 3.7。")
# 需要使用旧式的字符串格式化
name = "Bob"
print("name = {}".format(name))
使用 platform 模块(获取更丰富的系统信息)
platform 模块不仅能获取 Python 版本,还能获取操作系统、编译器等更多信息。

import platform
# 获取 Python 版本字符串('3.10.6')
version_str = platform.python_version()
# 获取 Python 版本信息(也是一个元组,如 (3, 10, 6))
version_tuple = platform.python_version_tuple()
# 获取完整的构建信息('CPython 3.10.6 final')'
build_info = platform.python_build()
print(f"Python 版本字符串: {version_str}")
print(f"Python 版本元组: {version_tuple}")
print(f"Python 构建信息: {build_info}")
优点:
- 提供的信息更全面,特别是
python_version_tuple()返回的(major, minor, patch)格式非常干净。
使用 __version__ 局部变量(不推荐,仅用于交互式环境)
在 Python 的交互式解释器(REPL)或某些库中,可以直接使用 __version__ 变量。
# 在 Python 交互式命令行中直接输入 # __version__ # 输出: '3.10.6' (或你安装的版本)
注意:
__version__不是 Python 语言本身的一部分,而是某些环境(如 IPython)或第三方库(如numpy,pandas)提供的。- 在标准的 Python 脚本中,直接使用
__version__会报错(NameError: name '__version__' is not defined)。 - 强烈不建议在正式代码中使用此方法来判断 Python 版本。
使用命令行(适用于终端、脚本或 CI/CD)
如果你想在命令行中查看 Python 版本,或者在 shell 脚本中进行判断,可以使用以下命令。
查看当前解释器的版本
# python # 如果你系统默认是 Python 3,或者使用 python3 python --version # 或者 python -V # 示例输出 # Python 3.10.6
在 shell 脚本中判断版本
#!/bin/bash
# 使用 `python3 --version` 并捕获输出
VERSION=$(python3 --version 2>&1)
# 提取版本号部分(例如从 "Python 3.10.6" 中提取 "3.10.6")
VERSION_NUM=$(echo $VERSION | awk '{print $2}')
# 使用 `sort -V` 进行版本号比较(需要 GNU sort)
if [ "$(printf '%s\n' "3.7" "$VERSION_NUM" | sort -V | head -n1)" = "3.7" ]; then
echo "Python 版本大于或等于 3.7"
else
echo "Python 版本小于 3.7"
fi
注意: sort -V (Version sort) 是一个有用的 GNU 工具特性,在 macOS 上可能需要使用 gsort。
总结与推荐
| 场景 | 推荐方法 | 示例 |
|---|---|---|
| 在 Python 代码中判断版本 | sys 模块 |
if sys.version_info >= (3, 7): |
| 获取简洁的版本号元组 | platform 模块 |
major, minor, patch = platform.python_version_tuple() |
| 在命令行查看版本 | python --version 或 python -V |
python3 --version |
| 在 shell 脚本中判断 | 命令行 + grep/awk/sort |
if python3 --version | grep -q "3\.[7-9]"; then ... |
对于绝大多数 Python 开发场景,使用 import sys 并通过 sys.version_info 进行判断是最佳实践,它清晰、可靠,并且是 Python 语言标准库的一部分。
