c# - 找不到 IronPython sys._getframe

标签 c# .net ironpython

我目前正在用 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/

相关文章:

.net - Visual Studio 解决方案 : Do these solutions have too many projects?

.net - 如何验证此 Windows 系统是否信任给定的 SSL 服务器证书?

c# - 在 Windows UWP 应用程序中使用 Python 和 C#

python - PyCharm:内置阴影名称 'self' ,错误还是功能?

c# - 如何向 Iron Python 添加模块?

c# - 将工作表名称作为书签将 Excel 转换为 PDF

c# - 使用 log4net 记录时“等待”不返回 UI 线程

c# - JavaScriptSerializer.反序列化数组

c# - 在DataGridView中使用DataTable显示小图(图标)

c# - 连续调用 Console.Beep() 之间的延迟