0

QREDIS というインタラクティブなモデリング プラットフォームを開発しています。これは、相互に関連する一連のモジュールで構成され、セットアップ スクリプトによってインポートされ、一連のモデル調査機能をユーザーに提供します。

セットアップの一環として、次をQMod_Template使用してクラスをロードします

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

このクラスは、ユーザー定義可能なモデルの基本クラスです。つまり、ユーザーは新しいモデルを定義して保存できますQMod_MyModel(QMod_Template)。これはすべて完全に機能します。ユーザーが後でモデルを再ロードすることを強制したくないので、指定されたモデル クラス ファイル (基本的にはコード のラッパー) をロードするexec(open('QMod_MyModel.py').read())関数LoadModelを modelに作成しました。QREDIS_Modelexec

この関数を実行すると、エラーが発生します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