QREDIS というインタラクティブなモデリング プラットフォームを開発しています。これは、相互に関連する一連のモジュールで構成され、セットアップ スクリプトによってインポートされ、一連のモデル調査機能をユーザーに提供します。
セットアップの一環として、次をQMod_Template
使用してクラスをロードします
exec(open('QMod_Template.py').read())
このクラスは、ユーザー定義可能なモデルの基本クラスです。つまり、ユーザーは新しいモデルを定義して保存できますQMod_MyModel(QMod_Template)
。これはすべて完全に機能します。ユーザーが後でモデルを再ロードすることを強制したくないので、指定されたモデル クラス ファイル (基本的にはコード のラッパー) をロードするexec(open('QMod_MyModel.py').read())
関数LoadModel
を modelに作成しました。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 をグローバルとして宣言しようとしましたが、うまくいきませんでした。
これは簡単な修正であると思います。私は何が欠けていますか?この拡張された質問により、私の問題がより明確になることを願っています。