关于python:导入从命令行传递的任何数量的模块?(归结为”如何解开一根绳子”?`

Importing any number of modules passed from the command line? (Boils down to `how to unstring a string?`)

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Dynamic module import in Python

我需要一个允许用户从命令行导入多个模块的功能。因此,首先,让我们设置代码,允许用户在列表中传递尽可能多的参数:

1
2
3
4
5
6
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("cmd", action="store", nargs='*')
args = parser.parse_args()
args_list = args.cmd

我知道您可以使用此语法导入任意多个模块:

1
import sys, os, math

因此,现在我只需要找到一种方法,从具有模块名的字符串列表(args_list中取消每个元素的绑定,这样我就可以执行以下操作:

1
2
for el in args_list:
    import unstring(el)


使用此:

1
2
for el in args_list:
    globals()[el] = __import__(el, globals(), locals())

您可能希望使用内置的__import__功能,例如:

1
__import__(el, globals(), locals())