पायथन में, एक नेमस्पेस पैकेज आपको पायथन कोड को कई प्रोजेक्ट्स में फैलाने की अनुमति देता है। यह तब उपयोगी होता है जब आप संबंधित लाइब्रेरी को अलग-अलग डाउनलोड के रूप में जारी करना चाहते हैं।
उदाहरण संरचना
PYTHONPATH में `Package-1` और `Package-2` डायरेक्टरी के साथ:
Package-1/namespace/__init__.py
Package-1/namespace/module1/__init__.py
Package-2/namespace/__init__.py
Package-2/namespace/module2/__init__.py
अंतिम उपयोगकर्ता `import namespace.module1` और `import namespace.module2` दोनों कर सकता है।
पायथन 3.3+ में (इम्प्लिसिट नेमस्पेस पैकेज)
पायथन 3.3 में, आपको कुछ भी करने की आवश्यकता नहीं है - बस अपने नेमस्पेस पैकेज डायरेक्टरी में कोई `__init__.py` न रखें और यह अपने आप काम करेगा। ऐसा इसलिए है क्योंकि पायथन 3.3 ने इम्प्लिसिट नेमस्पेस पैकेज पेश किए।
पुराने संस्करणों में (pkgutil का उपयोग)
पुराने संस्करणों में, `pkgutil` नामक एक मानक मॉड्यूल है जिसके साथ आप किसी दिए गए नेमस्पेस में मॉड्यूल को 'अपेंड' कर सकते हैं। आपको `Package-1/namespace/__init__.py` और `Package-2/namespace/__init__.py` दोनों में ये दो लाइनें डालनी चाहिए:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
यह पैकेज के `__path__` में `sys.path` पर पैकेज के नाम पर रखे गए डायरेक्टरी के सभी सबडायरेक्टरी जोड़ देगा। इसके बाद आप 2 पैकेज को अलग-अलग वितरित कर सकते हैं और पायथन नेमस्पेस्ड पैकेज का लाभ उठा सकते हैं।
मुख्य लाभ
- बड़े प्रोजेक्ट्स को छोटे, स्वतंत्र पैकेज में विभाजित करें
- टीमों को अलग-अलग घटकों पर स्वतंत्र रूप से काम करने दें
- संस्करण और निर्भरता प्रबंधन सरल करें