IronPython在沙箱中运行时“未定义名称'locals'”,而在我直接运行脚本时则未定义

时间:2018-08-19 23:11:27

标签: python ironpython

如果在我正在开发的这款游戏中使用的沙箱中的IronPython脚本中调用locals函数,则会收到错误消息“未定义名称'locals'”,但是如果我在独立脚本中调用它, 有用。可以从沙箱中的脚本上下文中删除locals函数吗?

编辑:添加了一个示例脚本,当我在转弯中运行该脚本时,该脚本有效,但是当我生成下一转弯时,该脚本崩溃,提示未定义str

import sys, imp;
import __builtin__ as builtins;
builtins_code = """""";
exec builtins_code in builtins.__dict__;
import clr
clr.AddReference('System.Core')
import System
clr.ImportExtensions(System.Linq)
clr.AddReference('FrEee.Core')
import FrEee
import FrEee.Utility
clr.ImportExtensions(FrEee.Utility.Extensions)
from FrEee.Modding import Mod
from FrEee.Game.Objects.Space import Galaxy
from FrEee.Game.Objects.Civilization import Empire
'Generates ' + str(ShieldPointsGenerated) + ' shield points.'

像这样注入ShieldPointsGenerated变量:

engine.GetBuiltinModule().SetVariable(kvp.Key, kvp.Value);

其中的键/值对是我在脚本中使用的变量名和值。

0 个答案:

没有答案