2

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

我试过类似的东西:

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

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

当前返回:ImportError: No module named userModule

4

2 回答 2

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

请注意,这不是最简单和最直接的任务,您可能需要重新考虑这样做的智慧。

于 2012-11-21T10:39:52.720 回答
0

一种解决方案是使用以下__import__功能:

userModuleName = raw_input("Which module to import? ")
try:
    userModule = __import__(userModuleName)
except ImportError:
    print "could not import", userModuleName
于 2012-11-21T10:40:58.440 回答