开发者

python获取版本信息的方法与第三方库总结

开发者 https://www.devze.com 2025-11-09 09:16 出处:网络 作者: 呆萌的代Ma
目录当前版本信息获取所有第三方库方法补充运行如下代码即可: print(get_python_base_version())
目录
  • 当前版本信息
  • 获取所有第三方库
  • 方法补充

运行如下代码即可:

print(get_python_base_version())
print(get_python_site_packages())

当前版本信息

获取当前的版本信息如下:

def get_python_base_version():
    """获取python版本信息"""
    version_dict = {
        "Python版本": sys.version,
        "Python解释器路径": sys.executable,
        "版本详细信息": sys.version_info,
    }
    return version_dict

获取所有第三方库

获取全部的第三方库:

def get_python_site_packages():
    # 查看Python的包搜索路径
    logger.debug("Python包搜索路径:")
    _packet_path: dict = {"第三方库": {}, '搜索路径': sys.path}
    try:
        # 获取所有已安装的包
        distributions = list(importlib.metadata.distributions())
        distributions.sort(key=lambda dist: dist.metadata["Name"].lower() if dist.metadata["Name"] else "")
        # 获取site-packages路径
        site_packages_paths = []
        try:
            site_packages_paths = site.getsitepackages()
        except:
            site_packages_paths = [p for p in sys.path if 'site-packages' in p]

        user_site_packages = site.getusersitepackages()
        all_third_party_paths = site_packages_paths + [user_site_packages]

        displayed_packages = set()  # 避免重复显示

        for dist in distributions:
            package_name = dist.metadata["Name"]
            if not package_name or package_name in displayed_packages:
                continue

            displayed_packages.add(package_name)
            # 直接检查dist的路径属性
            dist_location = None
            try:
                # 对于某些版本的importlib.metadata,可以直接获取路径
                if hasattr(dist, '_path'):
                    dist_location = str(dist._path.parent)
            exceppythont:
                pass
            # 如果无法直接获取,尝试通过文件推断
            if not dist_location and dist.files:
                for file in dist.files:
                    if file.parent:
                        file_path = str(file.parent)
                        for third_party_path in all_third_party_paths:
                            if third_party_path in file_path:
                                dist_location = third_party_path
                                break
                    if dist_location:
                        break
            # 如果在第三方包路径中,则显示
            if dist_lhttp://www.devze.comocation and any(tp_path in dist_location for tp_path in all_third_party_paths):
                _packet_path["第三方库"][package_name] = dist_location
    except Exception as e:
        logger.error(phpf"获取包信息时出错: {e}")
    return _packet_path

方法补充

使用sys.version_info获取结构化版本信息

sys.version_info 返回一个命名元组( sys.versioninfo ),其中包含主版本号、次版本号、微版本号、发布状态和构建序号。该元组可以通过索引或命名属性访问。

示例代码:

import sys
 
print(sys.version_info)

输出示例:

sys.version_info(major=3, minor=11, micro=4, releaselevel='final', serial=0)

逐行解释与参数说明:

  • print(sys.version_info) :打印结构化版本信息;
  • major :主版本号;
  • minor :次版本号;
  • micro :微版本号;
  • releaselevel :发布状态,如 ‘alpha’www.devze.com、’beta’、’final’;
  • serial :构建序号编程客栈,用于区分同一版本的不同构建。

由于 sys.version_info 是结构化的数据,因此非常适合用于版本比较、条件判断等逻辑处理。

使用sys.version获取完整版本字符串

sys.version 返回一个字符串,表示当前 Python 解释器的完整版本信息。其内容通常包括:

  • 主版本号;
  • 次版本号;
  • 微版本号;
  • 构建信息(编译时间、编译器版本等);
  • 解释器类型(如 CPython、PyPy 等)。

示例代码:

import sys
 
print(sys.version)

输出示例:

3.11.4 (tags/v3.11.4:d2340ef, Jun  6 2023, 20:54:21) [MSC v.1934 64 bit (AMD64)]

逐行解释与参数说明:

  • import sys :导入 sys 模块;
  • print(sys.version) :打印当前 Python 的版本字符串。

此输出包含了详细的版本信息,适合用于调试、日志记录等场景。但因为是字符串格式,不适合用于版本比较或条件判断。

到此这篇关于python获取版本信息的方法与第三方库总结的文章就介绍到这了,更多相关python获取版本信息内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号