2013-02-14 120 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