0

我正在开发一个名为 QREDIS 的交互式建模平台。它由一组相互关联的模块组成,这些模块由安装脚本导入,并为用户提供一组模型研究功能。

作为设置的一部分,我QMod_Template使用

exec(open('QMod_Template.py').read())

此类是用户可定义模型的基类;即用户可以定义和保存一个新模型QMod_MyModel(QMod_Template)。这一切都完美无缺。我不想强迫用户稍后用 重新加载他的模型exec(open('QMod_MyModel.py').read()),所以我LoadModel在模型QREDIS_Model中创建了一个函数,它将加载指定的模型类文件(基本上是exec代码的包装器)。

当我执行这个函数时,我得到一个错误NameError: name 'QMod_Template' is not defined。总结

首先,我从文件中加载一个类:

exec(open('QMod_Template.py').read())

然后我导入一个模块

import QREDIS_Model as QM

然后我尝试加载另一个模型类文件

QM.LoadModel('QMod_MyModel.py')

并获得 NameError。

本质上,QREDIS_Model.LoadModel需要能够访问已经加载的QMod_Template类,但不能。我曾尝试在模块和函数中将 QMod_Template 声明为全局,但没有运气。

我认为这应该是一个简单的解决方法。我错过了什么?我希望这个扩展的问题能让我的问题更清楚。

4

0 回答 0