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__
1 つの解決策は、次の関数を使用することです。
userModuleName = raw_input("Which module to import? ")
try:
userModule = __import__(userModuleName)
except ImportError:
print "could not import", userModuleName