如何导入将在运行时定义的模块? [蟒蛇]

时间:2016-02-16 20:23:49

标签: python python-2.7 import

我给Python脚本提供了命令行参数,其中两个是python文件名和我要导入的类。如何定义模块并在运行期间在我的__main__函数中导入它?

谢谢!

ap=argparse.ArgumentParser()
ap.add_argument("-f", "--filename", help="the path to the file where the imaging class is located")
ap.add_argument("-c", "--class", help="name of the class to be imported")


args = vars(ap.parse_args())
filename = args["filename"]
imagingClass = args["class"]

from [filename] import [class] # <-- this part

2 个答案:

答案 0 :(得分:0)

对于Python 2.7+,建议使用importlib模块:

my_module = importlib.import_module("{}.{}".format(args["filename"], args["class"]))

您也可以使用__import__(),但importlib是可行的方法。

try:
    my_module = __import__("{}.{}".format(args["filename"], args["class"]))
except ImportError:
    # An error occurred.

答案 1 :(得分:-1)

您可以使用exec

exec "from {} import {}".format(filename, imagingClass)

推荐的方法是使用importlib

my_module = importlib.import_module("{}.{}".format(filename, imagingClass)

你也可以像这样使用__import__函数:

 my_module = __import__("{}.{}".format(filename, imagingClass))