.Net Framework中的Python - IronPython

來源:互聯網
上載者:User
提到Python,應該很多人都非常喜歡。Python文法簡潔而清晰,具有豐富和強大的類庫,能夠很輕鬆的把用其他語言製作的各種模組。但是由於他太過於簡單,有的時候於其他軟體結合的時候便又會遇到問題。因此,我們常常想能否有一些簡單的方法,然後Python的資源可以直接在其他語言中使用。對於.Net平台,答案是Yes。

Visual Studio作為Python的編譯器 Visual Studio應當算是非常強大的一個IDE環境,它本身也提供了對Python的支援。https://pytools.codeplex.com/ 可以下載PTVS工具。通過微軟提供的這個工具,我們能夠完全利用Visual Studio作為Python的工作環境,可以輕鬆實現代碼編寫、調試、單元測試等Visual Studio對其他語言支援的功能。另外例如像微軟雲平台Azure也提供了Python的SDK。

.Net平台代碼中直接調用Python的代碼 有了Visual Studio中的Python IDE環境並不代表我們可以輕鬆的整合Python和C#。但是微軟提供了另外一個開源工具,即 IronPython。使用這個工具非常簡單,按照如下步驟即可:
1)從上述網址安裝IronPython。 2)建立一個Python檔案,如下所示。下文引用sys.path是因為.Net環境中需要Python的類庫的地址,否則調用會失敗。
import syssys.path.append("C:\Python27")sys.path.append("C:\Python27\DLLs")sys.path.append("C:\Python27\Lib")sys.path.append("C:\Python27\Lib\site-packages")sys.platform = "win32"class FirstApp:def Do(self): return ["Hello, World!", "Alice"] 
3)建立一個新的項目,引用IronPython.Hosting與Microsoft.Scripting.Hosting等命運空間。 4)在C#代碼中載入Python類
var engine = Python.CreateEngine();dynamic py = engine.ExecuteFile(@"FirstApp.py");dynamic firstApp = py.FirstApp();
5)在C#代碼中直接調用Python中的類函數
IronPython.Runtime.List output = <span style="font-size: 12px; font-family: Arial, Helvetica, sans-serif;">firstApp</span><span style="font-size: 12px; font-family: Arial, Helvetica, sans-serif;">.Do();</span>

整個實現的過程非常的簡單,但是有人應該會擔心跨語言的調用效能如何。其實,IronPython的實現原理是將Python編譯成.Net平台的中繼語言IL,因此更夠保證代碼啟動並執行效率。有興趣的可以看看 微軟官方的解釋文章。

通過實驗發現大部分時候IronPython都能夠正常工作,不過少數情況下Python的類庫可能依賴於一些比較老的C/C++的代碼,這時IronPython會出現錯誤。這種時候可以考慮採用另一個開源的方案來解決此問題,即IronClad。具體問題需要具體分析,這篇博文就不闡述太多咯。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.