必须评估字符串以从模块访问类

时间:2011-03-01 16:34:00

标签: python module import eval

我已经加载了我的一个模块< module my_modules.mymodule from ... / my_modules / mymodule.pyc>使用__import __。

现在我将模块保存在一个变量中,但是我想创建一个mymodule类的实例。事情是 - 我已经将模块名称作为字符串传递到我的脚本中。 所以我有一个包含模块的变量,我有模块名称但是作为字符串。

variable_containing_module.string_variable_with_correct_classname()不起作用。因为它说模块中没有“string_variable_with_correct_classname”这样的东西 - 因为它没有评估字符串名称。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您的问题是__import__设计用于导入内部,而不是直接使用。其中一个症状是,从包内导入模块时,将返回顶级包而不是模块本身。

有两种方法可以解决这个问题。首选方法是使用importlib.import_module()而不是直接使用__import__

如果您使用的旧版本的Python不提供importlib,那么您可以创建自己的帮助函数:

import sys
def import_module(module_name):
    __import__(module_name)
    return sys.modules[module_name]

另见http://bugs.python.org/issue9254