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