2011-04-08 91 views
7

我有一些python代碼可以執行某個任務。我需要從C#中調用此代碼,而不必將.py文件轉換爲.exe,因爲整個應用程序都是基於C#構建的。從C調用python代碼(.py文件)#

我該怎麼做?

+0

嘗試http://pythonnet.github.io/ – denfromufa 2015-01-23 17:57:39

回答

6

如果您的python代碼可以通過IronPython執行,那麼這絕對是一種可行的方式 - 它提供了最好的互操作性,並且意味着您將能夠在腳本中使用.Net對象。

有許多方法可以從C#調用IronPython腳本,包括將腳本作爲可執行文件編譯爲執行單個腳本文件或事件,並在用戶鍵入時動態執行表達式 - 檢查文檔併發布另一個問題如果你仍然有問題。

如果您的腳本是CPython腳本,並且無法與IronPython配合使用,那麼您的選項會受到更多限制。我相信存在一些CPython/C#互操作,但是在Google搜索之後我找不到它。我能想到的最好的事情就是直接使用python.exeProcess類來調用腳本。

5

看一看IronPython

根據你的回答和評論,我相信你能做的最好的事情就是將IronPython嵌入到你的應用程序中。與往常一樣,這裏有一個相關的SO question。正如Kragen所說,重要的是不要依賴CPython模塊。

+0

它將python代碼轉換爲.exe文件,然後由c#調用它。我想直接用c#代碼調用python程序。 – Raj 2011-04-08 07:06:53

+0

@ user692856您可以隨時使用IronPython將python代碼編譯爲DLL而不是EXE,然後從您的C#項目中引用該代碼。 – 2011-04-08 07:19:45

1

Process.Start是你所追求的。它允許你調用另一個程序,並傳遞參數。