我已经加载了我的一个模块< module my_modules.mymodule from ... / my_modules / mymodule.pyc>使用__import __。
现在我将模块保存在一个变量中,但是我想创建一个mymodule类的实例。事情是 - 我已经将模块名称作为字符串传递到我的脚本中。 所以我有一个包含模块的变量,我有模块名称但是作为字符串。
variable_containing_module.string_variable_with_correct_classname()不起作用。因为它说模块中没有“string_variable_with_correct_classname”这样的东西 - 因为它没有评估字符串名称。我怎么能这样做?
答案 0 :(得分:1)
您的问题是__import__
设计用于导入内部,而不是直接使用。其中一个症状是,从包内导入模块时,将返回顶级包而不是模块本身。
有两种方法可以解决这个问题。首选方法是使用importlib.import_module()
而不是直接使用__import__
。
如果您使用的旧版本的Python不提供importlib
,那么您可以创建自己的帮助函数:
import sys
def import_module(module_name):
__import__(module_name)
return sys.modules[module_name]