它發生了:你開始在專案中使用一個模組並且它可以工作,但你沒有意識到它只是包含在你的 virtualenv 中,因為它是你正在使用的套件的依賴項。 pip-missing-reqs 找到這些模組,以便您可以將它們包含在專案的requirements.txt 中。
或者,您有一個長期運行的項目,其中在requirements.txt 中包含一些不再在程式碼庫中積極使用的套件。 pip-extra-reqs 工具將找到這些模組,以便您可以刪除它們。
假設您的專案遵循建議的範例專案的佈局:
安裝程式.py 安裝程式.cfg 要求.txt 樣本/__init__.py 樣本/樣本.py 樣本/測試/test_sample.py
基本用法,在你的專案目錄中運行:
<為您的專案啟動 virtualenv> pip-missing-reqs --ignore-file=樣本/測試/* 樣本
這將找到「sample」中程式碼中的所有匯入,並檢查這些模組所屬的套件是否在requirements.txt 檔案中。
此外,還可以檢查requirements.txt中是否存在隨後在專案中未使用的依賴項:
<為您的專案啟動 virtualenv> pip-extra-reqs --ignore-file=樣本/測試/* 樣本
這將找到在requirements.txt中列出但未由範例匯入的任何內容。
為了讓您的生活更輕鬆,請將以下內容複製到您的 tox.ini 中:
[testenv:pip-check-reqs] deps=-rrequirements.txt 命令= pip-missing-reqs --ignore-file=樣本/測試/* 樣本 pip-extra-reqs --ignore-file=樣本/測試/* 樣本
您的測試檔案有時會與應用程式來源(上面範例中的「範例」)位於同一目錄中。這些測試的要求通常不應出現在requirements.txt 檔案中,而且您不希望此工具為這些測試產生錯誤的命中。
您可以使用 --ignore-file 選項(簡寫為 -f)從檢查中排除這些測試檔案。允許該選項的多個實例。
如果您的專案具有有條件匯入的模組或有條件包含的需求,您可以使用 --ignore-module (簡寫為 -m)按名稱(或 glob 模式)從檢查中排除某些模組:
# 忽略模組垃圾郵件 pip-missing-reqs --ignore-module=垃圾郵件範本 # 也忽略整個垃圾郵件包 pip-missing-reqs --ignore-module=spam --ignore-module=spam.* 範例
如果您的專案使用pyproject.toml
,則有多種方法可以使用pip-check-reqs
。
一種方法是使用外部工具將pyproject.toml
轉換為requirements.txt
:
# 需要 `pip install pdm` pdm 導出 --pyproject > 要求.txt # 或者,如果您更喜歡 uv,`pip install uv` uv pip 編譯 --no-deps pyproject.toml > 需求.txt
然後您可以像平常一樣使用pip-missing-reqs
和pip-extra-reqs
。
另一種方法是在pyproject.toml
檔案中使用requirements.txt
文件,例如使用 setuptools 建置後端:
[ build-system ]
build-backend = " setuptools.build_meta "
requires = [
" setuptools " ,
]
[ project ]
...
dynamic = [ " dependencies " ]
[ tool . setuptools . dynamic ]
dependencies = { file = " requirements.txt " }
Josh Hesketh-重構了程式碼並貢獻了 pip-extra-reqs 工具。
Wil Cooley—他處理了 normalize_name 的刪除並修復了一些錯誤。