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

 更新时间:2025年11月08日 09:17:00   作者:呆萌的代Ma  
这篇文章主要为大家详细介绍了python获取版本信息的方法与第三方库,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解下

运行如下代码即可:

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)
            except:
                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_location 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(f"获取包信息时出错: {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’、’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获取版本信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python离散建模之感知器学习算法

    python离散建模之感知器学习算法

    这篇文章主要介绍了python离散建模之感知器学习算法,感知机学习算法是支持向量机的基础,支持向量机通过核函数进行非线性分类,支持向量机也是感知机算法的延伸,下面就来介绍感知算法的相关内容,需要的小伙伴可以参考一下
    2022-02-02
  • pytest配置文件pytest.ini的详细使用

    pytest配置文件pytest.ini的详细使用

    这篇文章主要介绍了pytest配置文件pytest.ini的详细使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • python新手经常遇到的17个错误分析

    python新手经常遇到的17个错误分析

    这篇文章主要介绍了python新手经常遇到的17个错误分析,需要的朋友可以参考下
    2014-07-07
  • python3爬虫中多线程进行解锁操作实例

    python3爬虫中多线程进行解锁操作实例

    在本篇文章里小编给大家整理了关于python3爬虫中多线程进行解锁操作实例内容,需要的朋友们可以参考下。
    2020-11-11
  • 关于Python中进度条的六个实用技巧分享

    关于Python中进度条的六个实用技巧分享

    在项目开发过程中加载、启动、下载项目难免会用到进度条,下面这篇文章主要给大家介绍了关于Python中进度条的六个实用技巧,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Python中的JMESPath库示例详解

    Python中的JMESPath库示例详解

    这篇文章主要介绍了Python中的JMESPath库示例详解,JMESPath的基本思想是使用类似于XPath的路径表达式来指定要从JSON结构中提取哪些数据,它允许您以一致的方式导航和过滤JSON对象和数组,需要的朋友可以参考下
    2023-09-09
  • python发送byte数据组到tcp的server问题

    python发送byte数据组到tcp的server问题

    这篇文章主要介绍了python发送byte数据组到tcp的server问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Python实现Window路径格式转换为Linux路径格式的代码

    Python实现Window路径格式转换为Linux路径格式的代码

    这篇文章主要介绍了Python实现Window路径格式转换为Linux路径格式的方法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-07-07
  • Python Pandas实现将字符串格式转为日期时间格式

    Python Pandas实现将字符串格式转为日期时间格式

    日期和时间数据在数据分析和处理中起着关键作用,本文将详细介绍如何使用Pandas将字符串格式的日期时间数据转换为日期时间格式,需要的可以参考下
    2024-01-01
  • python如何编写类似nmap的扫描工具

    python如何编写类似nmap的扫描工具

    这篇文章主要介绍了python如何编写类似nmap的扫描工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11

最新评论