تنسيق حزمة WHL
في نظام تطوير بايثون البيئي، حيث يعد توزيع الحزم بكفاءة أمرًا بالغ الأهمية، أصبحت ملفات WHL (Wheel) الحل القياسي لتوزيع وتثبيت حزم بايثون بشكل موثوق وسريع.
معلومات عن أرشيف Python Wheel
WHL هو تنسيق حزمة مبنية لبايثون يحتوي على جميع الملفات الضرورية للتثبيت في حالة مسبقة التجميع. في جوهرها، ملف WHL هو أرشيف ZIP بهيكل دليل خاص واتفاقية تسمية تسمح لمديري حزم بايثون بتثبيت البرامج دون الحاجة إلى تشغيل عملية البناء على نظام المستخدم النهائي. بسبب سرعة التثبيت والموثوقية الأفضل، حل هذا التنسيق عمومًا محل تنسيق .egg القديم وتوزيعات المصدر (.tar.gz) للعديد من منتجات بايثون.
تطور ملفات WHL
في عام 2012، أعلن PEP 427 عن تنسيق WHL، المسمى رسميًا “Wheel”، كتحسين على تنسيق egg السابق. أنشأه دانيال هولث لإصلاح عدد من المشكلات في نظام حزم بايثون البيئي. عندما تضمن pip، مثبت حزم بايثون، قدرة تثبيت wheel في الإصدار 1.4، الذي تم إصداره في أوائل عام 2013، شهد التنسيق ارتفاعًا كبيرًا في الاستخدام. بحلول عام 2014، بدأت حزم بايثون الرئيسية بتوزيع ملفات wheel، واليوم أصبح المعيار الفعلي لتوزيع حزم بايثون. مع التقدم في نظام حزم بايثون البيئي، يستمر التنسيق بالتطور؛ أحدث المعايير موضحة في PEP 600 و PEP 621.
بنية ملفات WHL
ملفات WHL هي في الأساس أرشيفات ZIP بهيكل داخلي محدد يتبع مواصفات حزم بايثون. داخل ملف WHL، ستجد وحدات بايثون المجمعة (ملفات .pyc)، بيانات وصفية حول الحزمة، وأي امتدادات ثنائية مطلوبة لعمل الحزمة. اسم الملف نفسه يتبع اتفاقية صارمة تشفر معلومات مهمة: اسم الحزمة، الإصدار، علامات توافق بايثون، والبنية المستهدفة. يسمح هذا النهج المنظم لمديري حزم بايثون بتحديد سريع ما إذا كان wheel متوافقًا مع النظام المستهدف دون الحاجة إلى استخراج محتوياته.
طرق ضغط WHL
تستخدم ملفات WHL نفس طرق الضغط مثل ملفات ZIP العادية لأنها أساسًا أرشيفات ZIP. خوارزمية Deflate، التي توازن بين نسبة الضغط وسرعة فك الضغط، هي الأكثر استخدامًا لضغط محتويات ملفات WHL. تضمن هذه الطريقة إمكانية تثبيت الحزم بسرعة مع الحفاظ على أحجام ملفات مناسبة للتوزيع. هذه الملفات متوافقة مع مكتبات مثل Aspose.ZIP ، التي تسهل استخراج وإنشاء حزم WHL باستخدام مجموعة متنوعة من تقنيات الضغط، مثل Deflate وDeflate64TM و Bzip2 وغيرها.
العمليات المدعومة لأرشيف WHL
باستخدام أدوات مثل Aspose.ZIP for Python .NET ، يمكن للمطورين التعامل مع ملفات WHL بطرق مختلفة. يمكن إنشاء حزم Wheel، فحص المحتويات، استخراج الملفات من WHL بدون تثبيت، تغيير البيانات الوصفية، وإعادة حزم wheels المعدلة. ستكون هذه الإجراءات مفيدة بشكل خاص لمشرفي حزم بايثون الذين يحتاجون إلى تصحيح المشكلات، تكييف الحزم لسياقات فريدة، أو فحص التبعيات. تتضمن مجموعة أدوات بايثون القياسية، التي تشمل أيضًا أدوات pip وwheel، أوامر إضافية لتثبيت ملفات WHL، تحويل توزيعات المصدر إلى wheels، والتحقق من صحة حزم wheel.
ملف WHL - البنية الداخلية
ملفات WHL هي أساسًا أرشيفات ZIP بهيكل داخلي محدد يتبع مواصفات حزم بايثون. داخل ملف WHL، ستجد:
- وحدات بايثون المجمعة: ملفات .pyc مسبقة التجميع يمكن تحميلها مباشرة بدون تجميع
- البيانات الوصفية للحزمة: معلومات حول مؤلف الحزمة، الإصدار، التبعيات، والمتطلبات
- امتدادات ثنائية: مكتبات مجمعة خاصة بالمنصة مطلوبة لوظائف الحزمة
- اتفاقية تسمية منظمة: اسم ملف يشفر معلومات حاسمة:
- اسم الحزمة
- رقم الإصدار
- علامات توافق بايثون
- البنية المستهدفة (مثل win_amd64، manylinux1_x86_64)
يشمل هذا التنظيم الداخلي الموحد:
- محتويات الحزمة الجذرية: شفرة بايثون الفعلية والموارد
- دليل dist-info.: يحتوي على ملفات البيانات الوصفية مثل METADATA وWHEEL وRECORD
- دليل data. (اختياري): يحتوي على ملفات بيانات وموارد غير خاصة ببايثون
يسمح هذا النهج المنظم بالتحقق السريع من الحزم وتثبيتها مع الحفاظ على الأمان من خلال التحقق من التجزئة.
شعبية ملفات WHL والدعم
بسبب كفاءتها وموثوقيتها، أصبح WHL طريقة التوزيع المفضلة لحزم بايثون. تتوفر الآن ملفات wheel لتقريبًا كل حزمة مدرجة في فهرس حزم بايثون (PyPI). يتم دعم هذا التنسيق بالكامل من قبل نظام بايثون البيئي، مع أدوات مساعدة مثل pip تعطي الأولوية لـ wheels على توزيعات المصدر حيثما تتوفر. بغض النظر عن بيئة البرمجة، يستخدم مطورو بايثون دائمًا هذا التنسيق لأنه يعمل مع جميع أنظمة التشغيل الرئيسية، بما في ذلك Windows وmacOS وLinux.
أمثلة على استخدام ملفات WHL
ملفات WHL ضرورية لمطوري بايثون الراغبين في توزيع وتثبيت الحزم بكفاءة. العمل مع ملفات WHL برمجيًا يسمح للمطورين بتخصيص سير عمل إدارة الحزم الخاص بهم. في أمثلة الشفرة التالية، سنستكشف كيفية استخدام المكتبات لإنشاء واستخراج ملفات WHL، مع عرض تقنيات لفحص الحزم وتعديلها. ستساعدك هذه الأمثلة على فهم كيفية الاستفادة من ملفات WHL في مشاريع تطوير بايثون الخاصة بك لإدارة التبعيات والنشر بشكل أكثر سلاسة.
Create WHL via C#
using (var archive = new Archive())
{
archive.CreateEntry("entry_name1.dat", "input_file1.dat");
archive.CreateEntry("entry_name2.dat", "input_file2.dat");
archive.Save("result_archive.whl");
}
Compress and encrypt data file using Archive.Save method via C#
using (var whlFile = File.Open("EncrypedWithAES256.whl", FileMode.Create))
{
using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings(null, new AesEncryptionSettings("p@s$", EcryptionMethod.AES256))))
{
archive.CreateEntry("alice29.txt", source);
archive.Save(whlFile);
}
}
}
![]() | ![]() | ![]() |
---|
معلومات إضافية حول أرشيفات Zip
أسئلة يطرحها الناس
1. كيف أقوم بتثبيت ملف WHL في بايثون؟
لتثبيت ملف WHL، استخدم أمر pip: pip install filename.whl
. يعمل هذا الأمر على جميع المنصات وهو الطريقة القياسية لتثبيت حزم wheel في بايثون. إذا كنت تعمل في بيئة افتراضية، تأكد من تنشيطها أولاً.
2. هل يمكنني إنشاء ملفات WHL خاصة بي للتوزيع؟
نعم، يمكنك إنشاء ملفات WHL باستخدام أدوات بناء بايثون. أولاً، تأكد من أن مشروعك يحتوي على ملف setup.py أو pyproject.toml مناسب، ثم قم بتشغيل python -m build --wheel
في دليل مشروعك. سيؤدي هذا إلى إنشاء ملف WHL في دليل /dist يمكنك توزيعه أو تحميله إلى PyPI.
3. هل ملفات WHL خاصة بمنصة معينة؟
يعتمد ذلك على محتوى الحزمة. تعمل wheels ‘Pure Python’ (المميزة بعلامة ‘py3’) على جميع المنصات. ومع ذلك، فإن wheels التي تحتوي على امتدادات مجمعة (المميزة بعلامات خاصة بالمنصة مثل ‘win_amd64’ أو ‘manylinux’) خاصة بالمنصة وستعمل فقط على الأنظمة المطابقة. لهذا السبب تقدم بعض الحزم ملفات wheel متعددة لمنصات مختلفة.