"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إنشاء حزم مساحة الاسم في بايثون للوحدات المشتركة؟

كيفية إنشاء حزم مساحة الاسم في بايثون للوحدات المشتركة؟

تم النشر بتاريخ 2024-11-08
تصفح:750

How to Create Namespace Packages in Python for Shared Modules?

إنشاء حزم مساحة الاسم في Python لتوزيع الوحدات المشتركة

مقدمة

في Python، تعد حزم مساحة الاسم طريقة مناسبة لتوزيع الوحدات ذات الصلة. إنها تمكن منتجات بايثون المتعددة من تحديد الوحدات النمطية داخل نفس مساحة الاسم، مما يسمح للمستخدمين النهائيين باستيرادها بسلاسة.

تنفيذ حزم مساحة الاسم

حزم مساحة الاسم الضمنية في بايثون 3.3

بدءًا من Python 3.3، تم تقديم مفهوم حزم مساحة الاسم الضمنية. وهذا يلغي الحاجة إلى ملفات __init__.py الصريحة ضمن دلائل حزمة مساحة الاسم. يبحث نظام الاستيراد تلقائيًا في sys.path عن الدلائل التي لا تحتوي على ملفات __init__.py ويقوم بتهيئتها كحزم مساحة اسم.

حل Pre-Python 3.3

بالنسبة لإصدارات 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 كما هو متوقع.

pkg_resources .declare_namespace()

على النقيض من pkgutil.extend_path()، لم يتم تحديث وظيفة pkg_resources.declare_namespace() لدعم حزم مساحة الاسم الضمنية. ولذلك فمن المستحسن استخدام الحل pkgutil.

بيان الافراج أعيد طبع هذه المقالة على: 1729575676 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3