2013-02-14 115 views
3

我正在編寫一個C#GUI應用程序,我希望使用numpy,我廣泛使用了Python 2.7,它非常快速且易於編程。 (我仍然發現用C#工作的GUI比PyQt更容易使用)。如何部署通過IronPython調用numpy的C#應用​​程序

numpy和scipy的IronPython端口現在存在,我想了解如何使用它。

在開始之前,我想知道我有什麼樣的部署選項? 我可以完全包裝python和numpy,還是必須在我的客戶機器上安裝python,Ironpython,numpy?

+0

您使用的是哪種版本的Iron Python?什麼CLR? – 2013-02-14 23:52:34

+0

我仍然在使用我自己的數學(主要是4x4矩陣)數值部分。現在就使用C#(.Net 4.0)。由於我沒有使用任何高級C#特性,因此我會靈活部署,因爲它很容易部署。 – roadrunner66 2013-02-15 00:54:44

+1

dlr已經安裝了.net 4.所以你不必安裝它。在這種情況下,通常只需轉儲IronPython程序集和自定義程序集即可。我不知道裸體 - 你必須與他們覈對。 – 2013-02-15 00:57:32

回答

1

您可以將Ironpython代碼作爲DLL或exe包裝到.net程序集中。如果需要從加載其他.NET代碼的代碼,創建使用IronPython的腳本

import clr 
clr.CompileModules(dllname, module1.py, module2.py,...) 

然後加載組件與

Assembly dpma = Assembly.LoadFile(Path.GetFullPath("CompiledIronPythonModule.dll")); 
pyEngine.Runtime.LoadAssembly(dpma); 

(C#示例)的DLL。在VisualStudio中,您需要引用IronPython和項目中的dll。

我剛成功地用IronPython 2.7.5,Visual Studio 2012 .NET 4.0與英特爾Fortran Composer XE 2013(使用後者需要對scipy iron_setup.py文件進行一些更改)從頭編譯numpy和scipy-refactored。輸出是一組DLL。我現在可以在IronPython命令行上導入這些模塊。現在還沒有工作的是如何將IronPython代碼與numpy/scipy導入到.net程序集中。爲此,我將檢查ironpycompiler

+1

這些都是好消息!你還可以從運行Microsoft.Scripting的主機應用程序導入這些模塊嗎?你會在某處分享這些DLL嗎?如果這樣做的過程可以記錄下來,那將是非常好的,所以我們可以繼續很久以前由Enthought分佈開始的腳步。謝謝! – glopes 2015-08-13 23:32:06

+0

嗯,我不知道有關Microsoft腳本。但我很高興在Github上分享DLL。會帶我幾天,然後我會在這裏發佈鏈接。 – Sven 2015-09-01 09:11:29