在Python 2.7中,是否可以获取用户输入并使用它来确定加载哪个模块?
我尝试过类似的事情:
userModule = raw_input("Which module to import? ")
from userModule import *
其中没有名为userModule的预先存在的模块...
目前返回: ImportError:没有名为userModule的模块
答案 0 :(得分:3)
使用importlib
模块和一点点globals()
诡计:
import importlib
userModule = raw_input("Which module to import? ")
mod = importlib.import_module('signal')
names = mod.__all__ if hasattr(mod, '__all__') else dir(mod)
g = globals()
for name in names:
g[name] = getattr(mod, name)
del g, name, names, mod, importlib
请注意这不是最简单,最直接的任务,您可能想重新考虑这样做的智慧。
答案 1 :(得分:0)
一种解决方案是使用__import__
函数:
userModuleName = raw_input("Which module to import? ")
try:
userModule = __import__(userModuleName)
except ImportError:
print "could not import", userModuleName