我可以在Python 2.7中从基于raw_input的模块导入吗?

时间:2012-11-21 10:37:06

标签: python python-2.7

在Python 2.7中,是否可以获取用户输入并使用它来确定加载哪个模块?

我尝试过类似的事情:

userModule = raw_input("Which module to import? ")
from userModule import *

其中没有名为userModule的预先存在的模块...

目前返回: ImportError:没有名为userModule的模块

2 个答案:

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