这是a.py
看起来的
import sys
def test_import(another_python_file):
import another_python_file as b
b.run_me()
if __name__ == '__main__':
print sys.argv
test_import(sys.argv[1].strip())
这是b.py
看起来
def run_me():
print 'I am script b'
当我跑步时,我得到了
$ python a.py b.py
['a.py', 'b.py']
Traceback (most recent call last):
File "a.py", line 10, in <module>
test_import(sys.argv[1].strip())
File "a.py", line 5, in test_import
import another_python_file as b
ImportError: No module named another_python_file
我需要什么?
我希望它能导入b.py
并打印I am script b
我错过了什么?
答案 0 :(得分:1)
a.py:
import os
import sys
def test_import(another_python_file):
b = __import__(another_python_file)
b.run_me()
if __name__ == '__main__':
print sys.argv
test_import(sys.argv[1].strip('.py'))
b.py
def run_me():
print 'I am script b'
$ python a.py b.py
['a.py', 'b.py']
I am script b
我能够参考http://www.diveintopython.net/functional_programming/dynamic_import.html
答案 1 :(得分:0)
如果您不需要灵活性,只需使用__import__('module_name')
即可。如果您需要高级功能,如缓存控制,模块搜索或重新加载,请使用the imp module。