如何导入另一个作为命令行参数提供的python文件?

时间:2014-02-07 23:52:37

标签: python

这是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

我错过了什么?

2 个答案:

答案 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