python获取版本信息的方法与第三方库总结
作者:呆萌的代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获取版本信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
