Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में पैकेज एक्सटेंशन यूटिलिटी (pkgutil)

pkgutil मॉड्यूल पायथन पैकेजेस के लिए इम्पोर्ट नियम बदलने, पैकेज खोज पथ बढ़ाने, और पैकेज के भीतर नॉन-कोड रिसोर्सेस लोड करने की सुविधा देता है।

मुख्य फंक्शन्स

1. extend_path(path, name)

पैकेज के मॉड्यूल्स के लिए खोज पथ बढ़ाता है। पैकेज के __init__.py में उपयोग करें:

import pkgutil
__path__ = pkgutil.extend_path(__path__, __name__)

यह sys.path को स्कैन करता है और दिए गए नाम के सबडायरेक्टरी वाले डायरेक्टरीज को जोड़ता है।

2. find_loader(fullname)

दिए गए फुलनेम के लिए मॉड्यूल लोडर प्राप्त करता है।

3. get_importer(path_item)

दिए गए पाथ आइटम के लिए फाइंडर प्राप्त करता है।

4. get_loader(module_or_name)

मॉड्यूल या नाम के लिए लोडर ऑब्जेक्ट लौटाता है।

5. iter_importers(fullname='')

दिए गए मॉड्यूल नाम के लिए फाइंडर ऑब्जेक्ट्स यील्ड करता है।

6. iter_modules(path=None, prefix='')

पाथ पर सभी सबमॉड्यूल्स के लिए ModuleInfo यील्ड करता है। यदि पाथ None है, तो sys.path पर सभी टॉप-लेवल मॉड्यूल्स।

import pkgutil

# सभी टॉप-लेवल मॉड्यूल्स लिस्ट करें
for module_info in pkgutil.iter_modules():
    print(module_info.name)

# विशिष्ट पैकेज के सबमॉड्यूल्स
for module_info in pkgutil.iter_modules(['/path/to/package']):
    print(module_info.name)

7. walk_packages(path=None, prefix='', onerror=None)

पाथ पर सभी मॉड्यूल्स के लिए रिकर्सिवली ModuleInfo यील्ड करता है।

import pkgutil
import sys

def explore_package(module_name):
    loader = pkgutil.get_loader(module_name)
    if loader is None:
        return
    for sub_module in pkgutil.walk_packages([loader.path]):
        _, sub_module_name, _ = sub_module
        qname = module_name + "." + sub_module_name
        print(qname)
        explore_package(qname)

# उपयोग
explore_package('os')

8. ModuleInfo

नाम्ड टपल: ModuleInfo(module_finder, name, ispkg) - मॉड्यूल की संक्षिप्त जानकारी।

व्यावहारिक उदाहरण: प्लगइन सिस्टम

import pkgutil
import importlib

def load_plugins(package_name):
    """पैकेज से सभी प्लगइन मॉड्यूल्स लोड करें"""
    package = importlib.import_module(package_name)
    plugins = {}
    
    for _, module_name, is_pkg in pkgutil.iter_modules(package.__path__, package.__name__ + '.'):
        if not is_pkg:
            module = importlib.import_module(module_name)
            # मान लें कि प्रत्येक प्लगइन में register() फंक्शन है
            if hasattr(module, 'register'):
                plugins[module_name] = module.register()
    
    return plugins

# plugins/__init__.py में:
# __path__ = pkgutil.extend_path(__path__, __name__)

रिसोर्स एक्सेस

पैकेज के भीतर डेटा फाइल्स पढ़ने के लिए (पायथन 3.7+):

import pkgutil

# बाइनरी डेटा पढ़ें
data = pkgutil.get_data('my_package', 'data/config.json')
print(data.decode('utf-8'))

# या importlib.resources (पायथन 3.7+ अनुशंसित)
from importlib import resources
with resources.open_text('my_package', 'config.json') as f:
    content = f.read()

सारांश

फंक्शनउद्देश्य
extend_pathपैकेज खोज पथ बढ़ाएं
iter_modulesसबमॉड्यूल्स सूचीबद्ध करें
walk_packagesरिकर्सिव मॉड्यूल खोज
get_dataपैकेज रिसोर्स पढ़ें
get_loaderमॉड्यूल लोडर प्राप्त करें
  1. पायथन प्रोग्राम: न्यूनतम लागत पथ पायथन प्रोग्राम: न्यूनतम लागत पथ

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक लागत मैट्रिक्स और एक स्थिति (m, n) दी गई है, हमें (0, 0) से (m, n) तक पहुंचने के लिए न्यूनतम लागत पथ की लागत ज्ञात करनी है। प्रत्येक सेल एक सेल से दूसरे सेल तक पार करने की लागत को दर्शाता है। उदाहरण # डायनामिक दृष्टिकोण R =

  1. पायथन कोड पैकेजिंग और पब्लिशिंग (PyPI) पायथन कोड पैकेजिंग और पब्लिशिंग (PyPI)

    पायथन पैकेज बनाकर PyPI (Python Package Index) पर प्रकाशित करना सरल प्रक्रिया है। चरण 1: पैकेज संरचना तैयार करें my_package/ ├── my_package/ │ ├── __init__.py │ └── module.py ├── tests/ ├── README.md ├── LICENSE ├── setup.py ├── setup.cfg ├── pyproject.toml (आधुनिक) └── requirements.txt न्यूनतम

  1. Python में पाथ कैसे जोड़ें? Python में पाथ कैसे जोड़ें?

    Python एक प्रोग्रामिंग भाषा है जिसे पहली बार 1991 में जारी किया गया था। इसका एक एप्लिकेशन है जिसका उपयोग कई ऑपरेटिंग सिस्टम पर किया जा सकता है और डेवलपर्स इस पर नया कोड लिख और विकसित कर सकते हैं। Python विशाल संभावनाओं के कारण सबसे व्यापक रूप से उपयोग की जाने वाली प्रोग्रामिंग भाषाओं में से एक है जो