標籤:framework 開發人員 message 搜尋 mono 結果 前言 指令碼 cal
前言
IronPython 是一種在 .NET 及 Mono上的 Python 實現,由微軟的 Jim Hugunin(同時也是 Jython 創造者) 所發起,是一個開源的項目,基於微軟的 DLR 引擎。在 2007 年,開發人員決定改寫構架,使用動態類型系統以讓更多指令碼語言能很容易地移植到NET Framework上。IronPython 的官方並未實現 Python 通用類庫,僅實現了部分核心類,社區的開源類庫實現有:
fepy(http://fepy.sourceforge.net/):fepy 為 IronPython 提供 Python 的大多數通用類庫的實現。
Test For IronPython
(1)在VS2017中建立表單項目:IronPythonTest.
(2)VS功能表列工具中開啟“Nuget封裝管理員”:
(3)搜尋IronPython程式包並安裝:
(4)安裝成功後,在exe程式所在檔案夾下(也可以在其他目錄下,通過指定相對路徑),建立Python指令碼:
樣本(實現求兩個數的四則運算)
num1=arg1 num2=arg2 op=arg3 if op==1: result=num1+num2 elif op==2: result=num1-num2 elif op==3: result=num1*num2 else: result=num1*1.0/num2
(5)修改工程的設定檔App.config:
(6)計算按鈕的點擊事件:
private void btnCalculate_Click(object sender, EventArgs e) { ScriptRuntime scriptRuntime = ScriptRuntime.CreateFromConfiguration(); ScriptEngine rbEng = scriptRuntime.GetEngine("python"); ScriptSource source = rbEng.CreateScriptSourceFromFile("hello.py");//設定指令檔 ScriptScope scope = rbEng.CreateScope(); try { //設定參數 scope.SetVariable("arg1", Convert.ToInt32(txtNum1.Text)); scope.SetVariable("arg2", Convert.ToInt32(txtNum2.Text)); scope.SetVariable("arg3", operation.SelectedIndex + 1); } catch (Exception) { MessageBox.Show("輸入有誤。"); } source.Execute(scope); labelResult.Text = scope.GetVariable("result").ToString(); }
(7)運行結果:
可參考相關文章:
使用IronPython整合Python和.NET
跨語言和跨編譯器的那些坑(CPython vs IronPython)
C#Note13:如何在C#中調用python