Avatar ·

Python में सापेक्ष आयात

📁 पायथन, प्रश्न, मदद

कुछ समय से (जब से सापेक्ष आयात हटा दिया गया) मैं इस प्रश्न को सामान्य रूप से हल नहीं कर पा रहा हूँ:

मान लीजिए, प्रोग्राम की संरचना इस प्रकार है:

app/    __init__.py    foo/        __init__.py        handler.py

मॉड्यूल handler.py से पैकेज foo से कुछ कैसे लोड करूँ?

समस्या यह है कि पैकेज foo का नाम शुरू में अज्ञात है, मैं इसे importlib का उपयोग करके लोड कर रहा हूँ।

अब तक मुझे यह समाधान मिला है: मैं __name__ वेरिएबल को काटता हूँ, जो handler.py में 'foo.handler' के बराबर है, यानी इस प्रकार:

foo_name = __name__.rsplit('.', 1)[0]

और फिर मैं आवश्यक मॉड्यूल लोड करता हूँ:

needle_module = importlib.import_module('.' + <मॉड्यूल का नाम>, foo_name)

लेकिन, जैसा कि