تكرار السؤال: …
الإجابة المختصرة
وضع الكود داخل مجلد src يمنع استيراده بالخطأ من مجلد العمل الحالي، فتُجبر الاختبارات على استخدام الحزمة المثبتة، وتظهر أخطاء الـ packaging مبكرًا.
الشرح
في الـ flat layout يكون مجلد الحزمة بجوار الاختبارات، فتعمل الاختبارات حتى لو كانت الحزمة المبنية تنقصها ملفات. مع src layout تحتاج تثبيتًا (عادةً editable) قبل التشغيل، مقابل ثقة أكبر في أن ما تختبره هو ما سيُنشر. يناسب ذلك المكتبات المنشورة خصوصًا، بينما قد يكفي الـ flat layout للتطبيقات البسيطة.
مثال بالكود
my-lib/
├── pyproject.toml
├── src/
│ └── my_lib/
│ ├── __init__.py
│ └── core.py
└── tests/
└── test_core.py
# pip install -e . ثم pytestأخطاء شائعة
- نجاح الاختبارات محليًا مع فشل الحزمة المنشورة لأن ملفات البيانات لم تُضمّن.
- تعديل sys.path يدويًا في الاختبارات بدل تثبيت الحزمة.