杰瑞科技汇

Python版本如何用Python判断?

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

Python版本如何用Python判断?-图1
(图片来源网络,侵删)

使用 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 版本,还能获取操作系统、编译器等更多信息。

Python版本如何用Python判断?-图2
(图片来源网络,侵删)
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 --versionpython -V python3 --version
在 shell 脚本中判断 命令行 + grep/awk/sort if python3 --version | grep -q "3\.[7-9]"; then ...

对于绝大多数 Python 开发场景,使用 import sys 并通过 sys.version_info 进行判断是最佳实践,它清晰、可靠,并且是 Python 语言标准库的一部分。

分享:
扫描分享到社交APP
上一篇
下一篇