มันเกิดขึ้น: คุณเริ่มใช้โมดูลในโครงการของคุณและมันใช้งานได้และคุณไม่รู้ว่ามันรวมอยู่ใน virtualenv ของคุณเท่านั้นเพราะมันขึ้นอยู่กับแพ็คเกจที่คุณใช้อยู่ pip-missing-reqs ค้นหาโมดูลเหล่านั้นเพื่อให้คุณสามารถรวมไว้ใน Requirements.txt สำหรับโปรเจ็กต์ได้
หรืออีกทางหนึ่ง คุณมีโครงการที่ใช้เวลานานซึ่งมีแพ็คเกจบางอย่างในข้อกำหนด txt ที่ไม่ได้ใช้งานใน codebase อีกต่อไป เครื่องมือ pip-extra-reqs จะค้นหาโมดูลเหล่านั้นเพื่อให้คุณสามารถลบออกได้
สมมติว่าโปรเจ็กต์ของคุณเป็นไปตามเค้าโครงเหมือนโปรเจ็กต์ตัวอย่างที่แนะนำ:
setup.py การตั้งค่า.cfg ข้อกำหนด.txt ตัวอย่าง/__init__.py ตัวอย่าง/sample.py ตัวอย่าง/การทดสอบ/test_sample.py
การใช้งานพื้นฐาน ที่ทำงานอยู่ในไดเร็กทอรีโปรเจ็กต์ของคุณ:
<เปิดใช้งาน virtualenv สำหรับโครงการของคุณ> pip-missing-reqs --ignore-file=sample/tests/* ตัวอย่าง
วิธีนี้จะค้นหาการนำเข้าทั้งหมดในโค้ดใน "ตัวอย่าง" และตรวจสอบว่าแพ็คเกจที่โมดูลเหล่านั้นเป็นอยู่นั้นอยู่ในไฟล์ Requirements.txt
นอกจากนี้ ยังสามารถตรวจสอบได้ว่าไม่มีการขึ้นต่อกันในข้อกำหนด txt ที่ไม่ได้ใช้ในโครงการ:
<เปิดใช้งาน virtualenv สำหรับโครงการของคุณ> pip-extra-reqs --ignore-file=sample/tests/* ตัวอย่าง
ซึ่งจะค้นหาสิ่งใดก็ตามที่อยู่ใน Requirements.txt แต่ไม่ได้นำเข้าตามตัวอย่าง
เพื่อให้ชีวิตของคุณง่ายขึ้น ให้คัดลอกสิ่งนี้ลงใน tox.ini ของคุณ:
[testenv:pip-check-reqs] deps=-rrequirements.txt คำสั่ง= pip-missing-reqs --ignore-file=sample/tests/* ตัวอย่าง pip-extra-reqs --ignore-file=sample/tests/* ตัวอย่าง
บางครั้งไฟล์ทดสอบของคุณจะปรากฏในไดเร็กทอรีเดียวกันกับแหล่งแอปพลิเคชันของคุณ ("ตัวอย่าง" ในตัวอย่างข้างต้น) โดยทั่วไปข้อกำหนดสำหรับการทดสอบเหล่านั้นไม่ควรอยู่ในไฟล์ Requirement.txt และคุณไม่ต้องการให้เครื่องมือนี้สร้าง Hit ที่ผิดพลาดสำหรับสิ่งเหล่านั้น
คุณอาจแยกไฟล์ทดสอบเหล่านั้นออกจากเช็คของคุณโดยใช้ตัวเลือก --ignore-file (ชวเลขคือ -f) อนุญาตให้ใช้ตัวเลือกได้หลายอินสแตนซ์
หากโครงการของคุณมีโมดูลที่นำเข้าแบบมีเงื่อนไข หรือข้อกำหนดที่รวมตามเงื่อนไข คุณอาจแยกโมดูลบางส่วนออกจากการตรวจสอบตามชื่อ (หรือรูปแบบ glob) โดยใช้ --ignore-module (ชวเลขคือ -m):
# เพิกเฉยต่อสแปมโมดูล pip-missing-reqs --ignore-module=ตัวอย่างสแปม # เพิกเฉยต่อสแปมแพ็คเกจทั้งหมดเช่นกัน pip-missing-reqs --ignore-module=spam --ignore-module=spam.* ตัวอย่าง
หากโปรเจ็กต์ของคุณใช้ pyproject.toml
คุณสามารถใช้ pip-check-reqs
ได้หลายวิธี
วิธีหนึ่งคือการใช้เครื่องมือภายนอกเพื่อแปลง pyproject.toml
เป็น requirements.txt
:
# ต้องใช้ `pip ติดตั้ง pdm` ส่งออก pdm --pyproject > ข้อกำหนด txt # หรือถ้าคุณต้องการ uv `pip ติดตั้ง uv` uv pip คอมไพล์ --no-deps pyproject.toml > needs.txt
จากนั้นคุณสามารถใช้ pip-missing-reqs
และ pip-extra-reqs
ได้ตามปกติ
อีกวิธีหนึ่งคือการใช้ไฟล์ requirements.txt
ภายในไฟล์ pyproject.toml
ของคุณ เช่น กับแบ็คเอนด์ setuptools build:
[ 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 และแก้ไขข้อบกพร่องบางอย่าง