要檢測Python項目中哪些依賴庫未被使用,可以采用以下方法:
1. 使用靜態分析工具
vulture
:靜態分析工具,檢測未使用的代碼和導入
pip install vulture
vulture your_project/
pyflakes
:檢查未使用的導入語句
pip install pyflakes
pyflakes your_script.py
2. 動態分析工具
coverage.py
+pytest-cov
:運行測試后生成覆蓋率報告,標記未執行的代碼(包括導入)
pip install coverage pytest-cov
pytest --cov=your_project tests/
3. 依賴關系分析
pipdeptree
:列出所有依賴樹,對比實際導入的庫
pip install pipdeptree
pipdeptree --reverse | grep -v "^\s" # 顯示頂層依賴
pip-check
:檢查已安裝但未使用的包
pip install pip-check
pip-check --unused
4. 自動化檢測腳本
通過對比requirements.txt
和實際導入的庫:
import pkgutil
import subprocess# 獲取已安裝的庫
installed = {pkg.name for pkg in pkgutil.iter_modules()}
# 獲取項目聲明的依賴
with open('requirements.txt') as f:required = {line.split('==')[0].strip() for line in f}unused = required - installed
print(f"未使用的依賴: {unused}")
5. IDE集成
- PyCharm/VSCode:內置未使用導入檢測(靜態分析)
pylint
:提供更全面的代碼質量檢查
pip install pylint
pylint your_project/
注意事項
- 間接依賴:某些庫可能被其他依賴隱式調用(如
absl-py
被TensorFlow依賴),需結合pipdeptree
分析 - 動態導入:
importlib.import_module()
或__import__()
可能無法被靜態工具檢測到 - 測試覆蓋率:確保測試覆蓋所有代碼路徑,否則可能誤報
推薦組合使用靜態和動態工具(如vulture
+coverage.py
)以提高準確性。