【发布时间】:2015-02-12 18:34:26
【问题描述】:
我注意到 IronPython 存在一个奇怪的问题。这是我的应用程序运行的一个非常简单的脚本:-
import globals
x = globals.x * globals.y
文件“globals.py”位于ScriptEngine的搜索路径中,只包含一系列name=value行(基本上是我们的脚本可能需要的“全局常量”),例如:-
x=5
y=10
..etc..
通常,应用程序的脚本每次运行时都能正常执行,但是如果我执行以下操作会遇到问题:-
首先,在 globals.py 中添加一个新行(例如z=15)。接下来,编辑我的应用程序脚本以使用新变量:-
import globals
x = globals.x * globals.y + globals.z
接下来执行脚本时(假设我没有关闭我的应用程序)然后我收到以下错误消息:-
'module'对象没有属性'z'
如果我重新启动我的应用程序然后执行脚本,它工作正常。我的应用程序使用单例 ScriptEngine,并且只能假设正在缓存某些东西导致这种情况(例如,旧版本的 globals.py 文件,不知何故?)。
我现在通过在每次执行脚本时创建一个新的 ScriptEngine 实例来解决此问题,但我很想知道可能导致问题的原因,以及是否有任何我可以“清除”的东西,而不必每次都实例化一个新的 ScriptEngine。
仅供参考,我的应用程序正在执行的脚本未编译。它只是使用以下方式运行:-
_engine.CreateScriptSourceFromString(
myScript,
SourceCodeKind.Statements);
【问题讨论】:
标签: ironpython