जब आप किसी विशिष्ट पैकेज के लिए मॉड्यूल खोज पथ में जोड़ना चाहते हैं और पैकेज में शामिल संसाधनों के साथ काम करना चाहते हैं, तो आपको पायथन लाइब्रेरी से pkgutil मॉड्यूल का उपयोग करने की आवश्यकता है। इसमें पायथन पैकेज के लिए आयात नियमों को बदलने के लिए कार्य शामिल हैं। पैकेज के भीतर वितरित फ़ाइलों से गैर-कोड संसाधनों को लोड करना भी संभव है।
विस्तार_पथ(पथ, नाम)
मॉड्यूल के लिए खोज पथ बढ़ाएँ जिसमें एक पैकेज शामिल है। निम्नलिखित कोड को पैकेज के __init__.py
. में डालने का इरादा हैimport pkgutil __path__ = pkgutil.extend_path(__path__, __name__)
विस्तार_पथ () निर्देशिकाओं के लिए sys.path को स्कैन करता है जिसमें दूसरे तर्क के रूप में दिए गए पैकेज के लिए नामित एक उपनिर्देशिका शामिल है। निर्देशिकाओं की सूची को पहले तर्क के रूप में पारित पथ मान के साथ जोड़ा जाता है और पैकेज आयात पथ के रूप में उपयोग के लिए उपयुक्त एकल सूची के रूप में लौटाया जाता है।
find_loader(पूरा नाम): दिए गए पूरे नाम के लिए मॉड्यूल लोडर प्राप्त करें।
get_importer(path_item): दिए गए path_item के लिए खोजक प्राप्त करें।
get_loader(module_or_name)
मॉड्यूल_या_नाम के लिए लोडर ऑब्जेक्ट प्राप्त करें।
iter_importers(fullname=''): दिए गए मॉड्यूल नाम के लिए यील्ड फाइंडर ऑब्जेक्ट।
iter_modules(path=कोई नहीं, उपसर्ग=''): पथ पर सभी सबमॉड्यूल के लिए मॉड्यूलइन्फो उत्पन्न करता है, या, यदि पथ कोई नहीं है, तो sys.path पर सभी शीर्ष-स्तरीय मॉड्यूल।
>>> pk = pkgutil.iter_modules() >>> for p in pk: print (p[1])
walk_packages(path=कोई नहीं, उपसर्ग='', onerror=कोई नहीं): पथ पर पुनरावर्ती रूप से सभी मॉड्यूल के लिए मॉड्यूलइन्फो उत्पन्न करता है, या, यदि पथ कोई नहीं है, तो सभी सुलभ मॉड्यूल।
import pkgutil import sys def explore_package(module_name): loader = pkgutil.get_loader(module_name) for sub_module in pkgutil.walk_packages([loader.filename]): _, sub_module_name, _ = sub_module qname = module_name + "." + sub_module_name print(qname) explore_package(qname)
मॉड्यूलइन्फो (मॉड्यूल_फाइंडर, नाम, आईएसपीकेजी):यह एक नेमटुपल देता है जिसमें मॉड्यूल की जानकारी का संक्षिप्त सारांश होता है।