Python模块看不到已经加载的类文件

2024-09-24 22:31:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个叫做QREDIS的交互式建模平台。它由一组相互关联的模块组成,这些模块通过设置脚本导入,并向用户提供一组模型研究功能。你知道吗

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

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

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

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

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

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

然后我导入一个模块

import QREDIS_Model as QM

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

QM.LoadModel('QMod_MyModel.py')

并获取名称错误。你知道吗

本质上,QREDIS_Model.LoadModel需要能够访问已经加载的QMod_Template类,但不能。我尝试在模块和函数中声明QMod\u模板为global,但没有成功。你知道吗

我想这应该是个简单的解决办法。我错过了什么?我希望这个延伸的问题能使我的问题更加清楚。你知道吗


Tags: 模块文件函数用户py模型readmodel