यह स्पष्ट नहीं है कि आप अपने स्थानीय नामस्थान पर क्या करने की कोशिश कर रहे हैं। मुझे लगता है कि आप my_method
एक स्थानीय, टाइपिंग के रूप में चाहते हैं output = my_method()
?
the_module = importlib.import_module("a.b.myfile")
same_module = __import__("a.b.myfile")
my_method = getattr(the_module, "my_method")
my_method = getattr(__import__("a.b.myfile"), "my_method")
output = my_method()
जब आप केवल my_method
स्थानीय नामस्थान में जोड़ते हैं , तो आप मॉड्यूल की श्रृंखला को लोड करते हैं। आप sys.modules
आयात से पहले और बाद की चाबियों को देखकर बदलाव देख सकते हैं । मुझे उम्मीद है कि यह स्पष्ट है और आपके अन्य उत्तरों की तुलना में अधिक सटीक है।
पूर्णता के लिए, यह है कि आप पूरी श्रृंखला को कैसे जोड़ते हैं।
a = __import__("a.b.myfile")
also_a = importlib.import_module("a.b.myfile")
output = a.b.myfile.my_method()
myfile = __import__("a.b.myfile", fromlist="a.b")
also_myfile = importlib.import_module("a.b.myfile", "a.b")
output = myfile.my_method()
और, अंत में, यदि आप उपयोग कर रहे हैं __import__()
और कार्यक्रम शुरू होने के बाद आपने खोज पथ को संशोधित किया है , तो आपको उपयोग करने की आवश्यकता हो सकती है __import__(normal args, globals=globals(), locals=locals())
। क्यों एक जटिल चर्चा है।
importlib.import_module()
करने की सलाह देते हैं__import__()
: docs.python.org/2/library/functions.html#__import__ - 2.7+ के लिए।