C#Note13:如何在C#中調用python

來源:互聯網
上載者:User

標籤: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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.