如何部署一个通过IronPython调用numpy的C#应用程序
我正在写一个C#的图形界面应用程序,想要使用numpy。这个库我在Python 2.7中用得很熟,速度快,编程也很简单。(我觉得在C#中做图形界面比用PyQt要简单得多。)
现在有一个IronPython版本的numpy和scipy,我想学习怎么使用它。
在开始之前,我想知道我有哪些部署选项?我能否完全把Python和numpy封装起来,还是说我需要在客户的机器上安装Python、IronPython和numpy?
1 个回答
2
你可以把IronPython代码打包成一个.NET的程序集,形式可以是DLL文件或者可执行文件(exe)。如果你需要从其他.NET代码中加载这些代码,可以使用IronPython脚本来创建一个DLL。
import clr
clr.CompileModules(dllname, module1.py, module2.py,...)
然后用下面的方式加载这个程序集:
Assembly dpma = Assembly.LoadFile(Path.GetFullPath("CompiledIronPythonModule.dll"));
pyEngine.Runtime.LoadAssembly(dpma);
(这是C#的例子)。在Visual Studio中,你需要在项目中添加对IronPython和这个DLL的引用。
我刚刚成功地用IronPython 2.7.5和Visual Studio 2012 .NET 4.0,从头开始编译了numpy和scipy(使用Intel Fortran Composer XE 2013时需要对scipy的iron_setup.py文件做一些修改)。最终输出的是一组DLL文件。现在我可以在IronPython的命令行中导入这些模块。不过,现在还不太清楚怎么把带有numpy/scipy导入的IronPython代码打包成一个.NET程序集。为此,我会去研究一下ironpycompiler。