python獲取版本信息的方法與第三方庫總結(jié)
運行如下代碼即可:
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() # 避免重復(fù)顯示
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獲取結(jié)構(gòu)化版本信息
sys.version_info 返回一個命名元組( sys.versioninfo ),其中包含主版本號、次版本號、微版本號、發(fā)布狀態(tài)和構(gòu)建序號。該元組可以通過索引或命名屬性訪問。
示例代碼:
import sys print(sys.version_info)
輸出示例:
sys.version_info(major=3, minor=11, micro=4, releaselevel='final', serial=0)
逐行解釋與參數(shù)說明:
- print(sys.version_info) :打印結(jié)構(gòu)化版本信息;
- major :主版本號;
- minor :次版本號;
- micro :微版本號;
- releaselevel :發(fā)布狀態(tài),如 ‘alpha’、’beta’、’final’;
- serial :構(gòu)建序號,用于區(qū)分同一版本的不同構(gòu)建。
由于 sys.version_info 是結(jié)構(gòu)化的數(shù)據(jù),因此非常適合用于版本比較、條件判斷等邏輯處理。
使用sys.version獲取完整版本字符串
sys.version 返回一個字符串,表示當前 Python 解釋器的完整版本信息。其內(nèi)容通常包括:
- 主版本號;
- 次版本號;
- 微版本號;
- 構(gòu)建信息(編譯時間、編譯器版本等);
- 解釋器類型(如 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)]
逐行解釋與參數(shù)說明:
- import sys :導(dǎo)入 sys 模塊;
- print(sys.version) :打印當前 Python 的版本字符串。
此輸出包含了詳細的版本信息,適合用于調(diào)試、日志記錄等場景。但因為是字符串格式,不適合用于版本比較或條件判斷。
到此這篇關(guān)于python獲取版本信息的方法與第三方庫總結(jié)的文章就介紹到這了,更多相關(guān)python獲取版本信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python利用pandas和matplotlib實現(xiàn)繪制雙柱狀圖
在數(shù)據(jù)分析和可視化中,常用的一種圖形類型是柱狀圖,柱狀圖能夠清晰地展示不同分類變量的數(shù)值,并支持多組數(shù)據(jù)進行對比,本篇文章將介紹python如何使用pandas和matplotlib繪制雙柱狀圖,需要的可以參考下2023-11-11
Python如何實現(xiàn)轉(zhuǎn)換URL詳解
這篇文章主要介紹了Python如何實現(xiàn)轉(zhuǎn)換URL詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07
python實現(xiàn)與Oracle數(shù)據(jù)庫交互操作示例
這篇文章主要為大家介紹了python實現(xiàn)與Oracle數(shù)據(jù)庫交互操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家,多多進步,早日升職加薪2021-10-10

