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

Written by

in

文章目录
  • 获取当前的版本信息如下: 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自动提取项目中导入的库及其版本信息 如何利用python正则表达式匹配版本信息 查看Python依赖包及其版本号信息的方法 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自动提取项目中导入的库及其版本信息
    • 如何利用python正则表达式匹配版本信息
    • 查看Python依赖包及其版本号信息的方法
    • Python实现获取操作系统版本信息方法

    站内搜索