找不到IronPython sys._getframe

时间:2011-08-09 14:30:56

标签: c# .net ironpython

我目前正在C#中构建一个程序,它将调用提供的python脚本文件中的函数 其中一些脚本文件在_getframe()中调用sys,这会导致错误:

  

System.MissingMemberException:'module'对象没有属性   '_getframe'

(因为默认情况下IronPython没有激活_getframe。)

我已经做了很多谷歌搜索,发现你可以通过提供ipy.exe作为命令行选项在-X:Frames中激活它,但是这不能解决我的问题,因为我是不直接使用ipy.exe来执行python代码。

this thread中,他们提到使用命令行选项从源代码重建IronPython,我下载了源文件,但不知道如何使用这些选项构建它。
他们还提到选项是在官方安装程序中,我已经多次运行安装程序exe但没有看到那些选项的一瞥。

2 个答案:

答案 0 :(得分:17)

创建PythonEngine时,您可以传递选项字典;你只需要将字典中的“Frames”和/或“FullFrames”键设置为true

var options = new Dictionary<string, object>();
options["Frames"] = true;
options["FullFrames"] = true;
ScriptEngine engine = Python.CreateEngine(options);

如果您不想要FullFrame,请将其保留或将其设置为false

答案 1 :(得分:6)

有点超出了问题的范围,但是对于其他任何人来说,通过直接使用ipy.exe解释器调用Python脚本来获取此错误。

您只需添加参数-X:FullFrames即可。因此,例如调用像

这样的脚本
ipy.exe -X:FullFrames script.py