/my/charts/
|- module/
|-abc.py
|- runtest.py
|- main.py
|- sample.py
我正在尝试从 runtest.py 呼叫 main.py 。在这种情况下,我想使用exec:-
导入 abc.pymodule_name = 'module.abc'
chart_type = 'abc'
exec('from {} import {} as drawing_class'.format(module_name,chart_type))
当我运行代码时,它没有给出任何错误,但是当我在exec的下一行打印 dir(drawing_class)或 drawing_class 时,它给出了一个错误。 像 NameError:未定义名称“ drawing_class”
但是当我在sample.py中编写相同的exec代码时,它就可以按预期工作。
为什么此 exec 在 main.py 中不起作用?
答案 0 :(得分:1)
考虑以下配置,从标准库中导入代码:
module_name = 'logging.config'
chart_type = 'dictConfig'
这在调用时可以正常工作:
import importlib
drawing_class = getattr(importlib.import_module(module_name), chart_type)
...从而完全避免了exec
的使用。