我正在开发一个名为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为全局,但没有运气。
我认为这应该是一个简单的修复。我错过了什么?我希望这个扩展的问题能让我的问题更清楚。