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__1 つの解決策は、次の関数を使用することです。

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