واردات النسبية في بايثون
📁 بايثون, سؤال, مساعدة
لبعض الوقت (منذ إلغاء الاستيرادات النسبية) لم أتمكن من حل السؤال التالي بشكل طبيعي:
لنفترض بنية البرنامج:
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)