我目前正在用 C# 构建一个程序,它将调用提供的 python 脚本文件中的函数。
其中一些脚本文件调用 sys
中的 _getframe()
,导致错误:
System.MissingMemberException: 'module' object has no attribute '_getframe'
(因为 IronPython 没有默认激活 _getframe
。)
我做了很多谷歌搜索,发现您可以通过提供 -X:Frames
作为命令行选项在 ipy.exe
中激活它,但是这并没有解决我的问题,因为我没有直接使用 ipy.exe
来执行 python 代码。
在this thread他们提到使用命令行选项从源代码重建 IronPython,我下载了源文件但不知道如何使用这些选项构建它。
他们还提到这些选项在官方安装程序中,我已经多次运行安装程序 exe,但没有看到这些选项。
最佳答案
创建 PythonEngine 时,您可以传递一个选项字典;您只需要将字典中的“Frames”和/或“FullFrames”键设置为true
:
var options = new Dictionary<string, object>();
options["Frames"] = true;
options["FullFrames"] = true;
ScriptEngine engine = Python.CreateEngine(options);
如果您不需要 FullFrames,只需将其保留或将其设置为 false
。
关于c# - 找不到 IronPython sys._getframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6997832/