Introduction to Python Packages
जब आप किसी organization में कार्य करते है तो अलग अलग programmers द्वारा create किये गए modules को use करते है। ऐसे में यह संभव है की कुछ programmers के module names आपस में conflict हो जाये।
Same Module Name Conflicts With Each Other
Name conflict तब होता है जब एक ही नाम के दो modules exist करते है। यह situation critical होती है क्योंकि एक ही नाम के दो modules को आप program में use नहीं कर सकते है। क्योंकि इससे interpreter confuse हो जाता है की आप किस module को import करना चाहते है।
इस situation को handle करने के लिए python में packages को introduce किया गया है।
Way of Structuring Python’s Module Namespace
Python में packages modules को structure करने का एक तरीका है। एक package एक directory (folder) होती है जिसमे आप modules को और दूसरे sub packages को store करते है।
इस प्रकार यदि आप same नाम के दो modules दो अलग अलग package directories में store करते है तो same नाम के होने पर भी वे एक दूसरे से conflict नहीं करते है।
आप अलग अलग विषयों से सम्बंधित modules को अलग अलग packages (directories) में store करके अपने सभी modules को एक निश्चित structure में organize कर सकते है।
__init__.py File
हर python package में एक __init__.py file होती है। Python interpreter द्वारा किसी directory को package के रूप में identify करवाने के लिए उस directory में इस file का होना अनिवार्य होता है।
आप इस file को empty भी create कर सकते है। इसके अलावा इस file में package का initialization code भी हो सकता है।
Importing Python Packages
Modules की ही तरह आप python packages को भी import करते है हालांकि packages में available modules को import करने का तरीका थोड़ा अलग होता है।
Uses Dotted Module Names
Packages में available modules को access करने के लिए dotted module names का प्रयोग किया जाता है। यानी की package और उसके अंदर define किये गए modules को बताने के लिए पहले package का नाम लिखा जाता है इसके बाद उस module का नाम लिखा जाता है।
Dotted module names से interpreter को पता चलता है की आप किस package से कौनसा module access करना चाहते है।
Import Single Module
<import> <packageName> <.> <moduleName>
|
जैसे की यदि आप myPackage में stored myModule को access करना चाहते है तो वह इस प्रकार होगा।
import packageName.moduleName
|
Import Subpackage Module
<import> <packageName> <.> <subPacakgeName> <.> <moduleName>
|
import myPackage.mySubPacage.myModule
|
Import Sub-Module Using from Keyword (Alternative Way)
<from> <packageName> <.> <moduleName> <import> <subModule>
|
from myPaccakge.myModule import mySubModule
|
Import Desired Function or Variable From Module
from myPackage.myModule import myFunction
|
Importing Complete Package (All Sub Modules)
एक पुरे package को import करने के लिए निचे दिया गया तरीका use किया जा सकता है।
from myPackage.myModule import *
|
यह statement myModule के सभी sub modules और definitions को import करता है। लेकिन यह एक सही approach नहीं है। इस प्रकार import करने पर आप अनचाहे submodules और definitions को import कर सकते है।
इस situation को handle करने के लिए python में __all__ variable को introduce किया गया है। यह variable __init__.py file में set किया जाता है।
इस variable के द्वारा आप उन submodules की index provide करते है, जिन्हें आप सम्पूर्ण module के import किये जाने पर import करना चाहते है।
__all__ = [“module-1″,”module-2″,”module-3”]
|
इस variable को set करने के लिए angular brackets के बीच comma से separate करके आप modules को define करते है।
0 Comments