يحدث ذلك: تبدأ في استخدام وحدة نمطية في مشروعك وتعمل ولا تدرك أنه تم تضمينها فقط في Virtualenv الخاص بك لأنها تعتمد على الحزمة التي تستخدمها. تبحث pip-missing-reqs عن تلك الوحدات حتى تتمكن من تضمينها في ملف require.txt الخاص بالمشروع.
وبدلاً من ذلك، لديك مشروع طويل الأمد يحتوي على بعض الحزم في ملف require.txt والتي لم تعد مستخدمة بشكل نشط في قاعدة التعليمات البرمجية. سوف تجد أداة pip-extra-reqs تلك الوحدات حتى تتمكن من إزالتها.
بافتراض أن مشروعك يتبع تخطيطًا مثل نموذج المشروع المقترح:
setup.py setup.cfg المتطلبات.txt عينة/__init__.py عينة/sample.py عينة/اختبارات/test_sample.py
الاستخدام الأساسي، الذي يعمل في دليل المشروع الخاص بك:
<تنشيط virtualenv لمشروعك> pip-missing-reqs --ignore-file=sample/tests/* Sample
سيؤدي هذا إلى العثور على جميع الواردات في الكود في "نموذج" والتحقق من أن الحزم التي تنتمي إليها هذه الوحدات موجودة في ملف require.txt.
بالإضافة إلى ذلك، من الممكن التحقق من عدم وجود تبعيات في ملف require.txt والتي لم يتم استخدامها بعد ذلك في المشروع:
<تنشيط virtualenv لمشروعك> pip-extra-reqs --ignore-file=sample/tests/* Sample
سيؤدي هذا إلى العثور على أي شيء مدرج في ملف require.txt ولكن لم يتم استيراده حسب العينة.
لتسهيل حياتك، انسخ شيئًا كهذا إلى ملف tox.ini الخاص بك:
[testenv:pip-check-reqs] deps=-rrequirements.txt الأوامر= pip-missing-reqs --ignore-file=sample/tests/* Sample pip-extra-reqs --ignore-file=sample/tests/* Sample
ستكون ملفات الاختبار الخاصة بك موجودة أحيانًا في نفس الدليل كمصدر التطبيق الخاص بك ("النموذج" في الأمثلة المذكورة أعلاه). بشكل عام، لا ينبغي أن تكون متطلبات هذه الاختبارات موجودة في ملف Requirements.txt، ولا تريد أن تقوم هذه الأداة بإنشاء نتائج خاطئة لتلك الاختبارات.
يمكنك استبعاد ملفات الاختبار هذه من الفحص الخاص بك باستخدام خيار --ignore-file (الاختصار هو -f). يُسمح بمثيلات متعددة للخيار.
إذا كان مشروعك يحتوي على وحدات تم استيرادها بشكل مشروط، أو متطلبات تم تضمينها بشكل مشروط، فيمكنك استبعاد وحدات معينة من التحقق حسب الاسم (أو نمط الكرة الأرضية) باستخدام --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
:
# يتطلب تثبيت النقطة PDM تصدير PDM - pyproject > المتطلبات.txt # أو، إذا كنت تفضل الأشعة فوق البنفسجية، `pip install uv` ترجمة نقطة الأشعة فوق البنفسجية --no-deps pyproject.toml > require.txt
وبعد ذلك، يمكنك استخدام pip-missing-reqs
وطلبات pip-extra-reqs
كالمعتاد.
هناك طريقة أخرى وهي استخدام ملف requirements.txt
داخل ملف pyproject.toml
، على سبيل المثال مع الواجهة الخلفية لبناء setuptools:
[ build-system ]
build-backend = " setuptools.build_meta "
requires = [
" setuptools " ,
]
[ project ]
...
dynamic = [ " dependencies " ]
[ tool . setuptools . dynamic ]
dependencies = { file = " requirements.txt " }
جوش هيسكيث - الذي أعاد بناء التعليمات البرمجية وساهم في أداة pip-extra-reqs.
Wil Cooley - الذي تولى عملية إزالة Normalize_name وأصلح بعض الأخطاء.