في Python، تعد حزم مساحة الاسم طريقة مناسبة لتوزيع الوحدات ذات الصلة. إنها تمكن منتجات بايثون المتعددة من تحديد الوحدات النمطية داخل نفس مساحة الاسم، مما يسمح للمستخدمين النهائيين باستيرادها بسلاسة.
بدءًا من Python 3.3، تم تقديم مفهوم حزم مساحة الاسم الضمنية. وهذا يلغي الحاجة إلى ملفات __init__.py الصريحة ضمن دلائل حزمة مساحة الاسم. يبحث نظام الاستيراد تلقائيًا في sys.path عن الدلائل التي لا تحتوي على ملفات __init__.py ويقوم بتهيئتها كحزم مساحة اسم.
بالنسبة لإصدارات Python قبل الإصدار 3.3، فإن pkgutil.extend_path () يمكن استخدام الطريقة لتعريف حزم مساحة الاسم الصريحة:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
يضيف هذا السطر أي حزم عادية موجودة في مسار البحث إلى سمة path لحزمة مساحة الاسم.
في السيناريوهات التي تتواجد فيها الحزم العادية وحزم مساحة الاسم معًا، تم توسيع طريقة Extend_path() المذكورة سابقًا لتشمل حزم مساحة الاسم الضمنية. يسمح هذا ببنية الدليل التالية:
├── path1 │ └── package │ ├── __init__.py │ └── foo.py ├── path2 │ └── package │ └── bar.py └── path3 └── package ├── __init__.py └── baz.py
مع ملفات __init__.py التي تستخدم Extend_path()، ستعمل كل من import package.foo وimport package.bar وimport package.baz كما هو متوقع.
على النقيض من pkgutil.extend_path()، لم يتم تحديث وظيفة pkg_resources.declare_namespace() لدعم حزم مساحة الاسم الضمنية. ولذلك فمن المستحسن استخدام الحل pkgutil.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3