تكرار السؤال: …
الإجابة المختصرة
الـ wheel حزمة مبنية جاهزة للتثبيت بنسخ الملفات فقط، بينما sdist أرشيف للمصدر يحتاج خطوة بناء على جهاز المستخدم، وقد يحتاج compiler إذا احتوى امتدادات C.
الشرح
الـ wheels أسرع في التثبيت ولا تنفذ أي كود بناء، ولذلك هي أكثر أمانًا وتوقعًا. الحزم النقية تنتج wheel واحدة (py3-none-any)، أما الحزم ذات الامتدادات المترجمة فتحتاج wheel لكل نظام ومعمارية وإصدار Python، وتُبنى عادةً بأدوات مثل cibuildwheel. انشر الاثنين على PyPI، وتحقق من محتوى الحزمة قبل النشر.
مثال بالكود
python -m build
# dist/billing_service-1.4.0-py3-none-any.whl
# dist/billing_service-1.4.0.tar.gz
unzip -l dist/*.whl # افحص المحتوى
python -m twine check dist/*أخطاء شائعة
- نشر sdist فقط لحزمة فيها امتدادات C فيضطر المستخدمون لتثبيت compiler.
- نشر الحزمة دون فحص محتواها فتتسرب ملفات اختبار أو أسرار.