Itu terjadi: Anda mulai menggunakan modul dalam proyek Anda dan itu berfungsi dan Anda tidak menyadari bahwa itu hanya disertakan dalam virtualenv Anda karena itu adalah ketergantungan dari paket yang Anda gunakan. pip-missing-reqs menemukan modul tersebut sehingga Anda dapat memasukkannya ke dalam persyaratan.txt untuk proyek tersebut.
Alternatifnya, Anda memiliki proyek yang sudah berjalan lama dan memiliki beberapa paket di persyaratan.txt yang tidak lagi digunakan secara aktif dalam basis kode. Alat pip-extra-reqs akan menemukan modul tersebut sehingga Anda dapat menghapusnya.
Dengan asumsi proyek Anda mengikuti tata letak seperti proyek sampel yang disarankan:
setup.py setup.cfg persyaratan.txt sampel/__init__.py sampel/sampel.py sampel/tes/test_sample.py
Penggunaan dasar, berjalan di direktori proyek Anda:
<aktifkan virtualenv untuk proyek Anda> pip-missing-reqs --ignore-file=sample/tests/* sampel
Ini akan menemukan semua impor dalam kode dalam "sampel" dan memeriksa apakah paket milik modul tersebut ada dalam file persyaratan.txt.
Selain itu, dimungkinkan untuk memeriksa bahwa tidak ada ketergantungan pada persyaratan.txt yang kemudian tidak digunakan dalam proyek:
<aktifkan virtualenv untuk proyek Anda> pip-extra-reqs --ignore-file=sample/tests/* sampel
Ini akan menemukan apa pun yang tercantum di persyaratan.txt tetapi tidak diimpor berdasarkan sampel.
Untuk membuat hidup Anda lebih mudah, salin sesuatu seperti ini ke tox.ini Anda:
[testenv:pip-periksa-permintaan] deps=-rrequirements.txt perintah= pip-missing-reqs --ignore-file=sample/tests/* sampel pip-extra-reqs --ignore-file=sample/tests/* sampel
File pengujian Anda terkadang ada di direktori yang sama dengan sumber aplikasi Anda ("contoh" pada contoh di atas). Persyaratan untuk pengujian tersebut umumnya tidak boleh ada dalam file persyaratan.txt, dan Anda tidak ingin alat ini menghasilkan hasil palsu untuk pengujian tersebut.
Anda dapat mengecualikan file pengujian tersebut dari cek Anda menggunakan opsi --ignore-file (singkatannya adalah -f). Beberapa contoh opsi diperbolehkan.
Jika proyek Anda memiliki modul yang diimpor secara bersyarat, atau persyaratan yang disertakan secara bersyarat, Anda dapat mengecualikan modul tertentu dari pemeriksaan berdasarkan nama (atau pola glob) menggunakan --ignore-module (singkatannya adalah -m):
# abaikan modul spam pip-missing-reqs --ignore-module=contoh spam # abaikan juga seluruh paket spam pip-missing-reqs --ignore-module=spam --ignore-module=spam.* contoh
Jika proyek Anda menggunakan pyproject.toml
, ada beberapa cara untuk menggunakan pip-check-reqs
dengannya.
Salah satu caranya adalah dengan menggunakan alat eksternal untuk mengonversi pyproject.toml
menjadi requirements.txt
:
# memerlukan `pip instal pdm` ekspor pdm --pyproject > persyaratan.txt # atau, jika Anda lebih suka uv, `pip install uv` kompilasi uv pip --no-deps pyproject.toml > persyaratan.txt
Kemudian Anda bisa menggunakan pip-missing-reqs
dan pip-extra-reqs
seperti biasa.
Cara lain adalah dengan menggunakan file requirements.txt
dalam file pyproject.toml
Anda, misalnya dengan backend build setuptools:
[ build-system ]
build-backend = " setuptools.build_meta "
requires = [
" setuptools " ,
]
[ project ]
...
dynamic = [ " dependencies " ]
[ tool . setuptools . dynamic ]
dependencies = { file = " requirements.txt " }
Josh Hesketh -- yang memfaktorkan ulang kode dan menyumbangkan alat pip-extra-reqs.
Wil Cooley -- yang menangani penghapusan normalize_name dan memperbaiki beberapa bug.