पायथन 3.4 और बाद में, आप सीधे स्रोत फ़ाइल से आयात कर सकते हैं (प्रलेखन के लिए लिंक) । यह सबसे सरल समाधान नहीं है, लेकिन मैं पूर्णता के लिए इस उत्तर को शामिल कर रहा हूं।
यहाँ एक उदाहरण है। सबसे पहले, आयात की जाने वाली फ़ाइल, नाम foo.py
:
def announce():
print("Imported!")
कोड जो ऊपर फ़ाइल आयात करता है, प्रलेखन में उदाहरण से काफी प्रेरित है:
import importlib.util
def module_from_file(module_name, file_path):
spec = importlib.util.spec_from_file_location(module_name, file_path)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return module
foo = module_from_file("foo", "/path/to/foo.py")
if __name__ == "__main__":
print(foo)
print(dir(foo))
foo.announce()
उत्पादन:
<module 'foo' from '/path/to/foo.py'>
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'announce']
Imported!
ध्यान दें कि चर नाम, मॉड्यूल नाम और फ़ाइल नाम का मिलान नहीं होना चाहिए। यह कोड अभी भी काम करता है:
import importlib.util
def module_from_file(module_name, file_path):
spec = importlib.util.spec_from_file_location(module_name, file_path)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return module
baz = module_from_file("bar", "/path/to/foo.py")
if __name__ == "__main__":
print(baz)
print(dir(baz))
baz.announce()
उत्पादन:
<module 'bar' from '/path/to/foo.py'>
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'announce']
Imported!
प्रोग्रामिक रूप से आयात करने वाले मॉड्यूल को पायथन 3.1 में पेश किया गया था और आपको मॉड्यूल को आयात करने के तरीके पर अधिक नियंत्रण प्रदान करता है। अधिक जानकारी के लिए दस्तावेज़ देखें।