在 Python 2.7 中是否可以获取用户输入并使用它来确定加载哪个模块?
我试过类似的东西:
userModule = raw_input("Which module to import? ")
from userModule import *
没有名为 userModule 的预先存在的模块...
当前返回:ImportError: No module named userModule
在 Python 2.7 中是否可以获取用户输入并使用它来确定加载哪个模块?
我试过类似的东西:
userModule = raw_input("Which module to import? ")
from userModule import *
没有名为 userModule 的预先存在的模块...
当前返回:ImportError: No module named userModule
使用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
请注意,这不是最简单和最直接的任务,您可能需要重新考虑这样做的智慧。
一种解决方案是使用以下__import__
功能:
userModuleName = raw_input("Which module to import? ")
try:
userModule = __import__(userModuleName)
except ImportError:
print "could not import", userModuleName