2011-08-09 41 views
11

我目前正在C#中建立一個程序,它將在提供的python腳本文件中調用函數。
一些腳本文件的調用sys_getframe(),這會導致錯誤:IronPython sys._getframe找不到

System.MissingMemberException: 'module' object has no attribute '_getframe'

(由於IronPython的沒有_getframe默認激活。)

我已經做了相當多的谷歌搜索並發現你可以通過-X:Frames作爲命令行選項在ipy.exe中激活它,但是這並不能解決我的問題,因爲我沒有直接使用ipy.exe來執行python代碼。

this thread他們提到使用命令行選項從源代碼重建IronPython,我下載了源文件,但不知道如何使用這些選項構建它。
他們還提到這些選項是在官方安裝程序中,我已經運行了幾次安裝程序exe,但沒有看到那裏的那些選項的一瞥。

回答

14

創建PythonEngine時,您可以傳遞選項字典;你只需要在字典中的「框架」和/或「FullFrames」鍵設置爲true

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

如果你不想FullFrames,剛剛離開它,或將其設置爲false

5

有點超出了問題的範圍,但意味着任何人通過直接使用ipy.exe解釋器調用Python腳本來獲取此錯誤。您可以添加參數-X:FullFrames。因此,例如調用腳本,如

ipy.exe -X:FullFrames script.py