【问题标题】:IronPython sys._getframe not foundIronPython sys._getframe 未找到
【发布时间】:2018-01-13 09:06:47
【问题描述】:

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

System.MissingMemberException:“模块”对象没有属性 '_getframe'

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

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

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

【问题讨论】:

    标签: c# .net ironpython


    【解决方案1】:

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

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

    如果您不想要 FullFrames,只需将其保留或将其设置为 false

    【讨论】:

      【解决方案2】:

      有点超出问题的范围,但意味着其他任何人都可以通过直接使用 ipy.exe 解释器调用 Python 脚本来获得此错误。

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

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

      【讨论】:

        猜你喜欢
        • 2017-12-06
        • 2012-01-05
        • 2016-07-27
        • 2014-05-01
        • 1970-01-01
        • 2019-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多