从C#运行Python函数

时间:2011-05-16 18:20:57

标签: c# .net python

我正在开发一个项目,我需要能够运行依赖于SciPy / NumPy的python函数。由于这是正在进行的项目的附加组件,因此使用IronPython不是一种选择。

其他信息:

  • Python.NET 似乎很合适,但我无法从 RunString()获取返回值(它只会返回NULL)。
  • 传递参​​数并捕获返回值(元组)是必要的。
  • 该功能位于由团队支持小组创建的统计包中,因此也无法对其进行修改。

我无所适从。任何正确方向的提示都值得赞赏。感谢您提供任何帮助!

我知道这可能很模糊,但我无法向项目提供明确的细节。如果需要澄清,请告诉我,我会尽力而为!

4 个答案:

答案 0 :(得分:2)

我猜你可以编写一个使用CPython API来暴露函数的DLL,然后在C#中调用它? 嵌入Python解释器是可能的;虽然我从未亲自做过这件事,但我想这会很有用:http://docs.python.org/extending/embedding.html

答案 1 :(得分:1)

它是否需要在Windows之外移植?如果没有,也许您可​​以使用C ++ / CLI嵌入CPython解释器,将其包装在一个漂亮的.Net-ish接口中,并使用C#生成的代码。从来没有尝试过,所以我不知道它是否会起作用。

无论你是通过这条路线还是'编写本机DLL'路线,使用Boost.Python嵌入python可能会更容易,但我不确定你的封装代码是否足够足够大,可以完成所有这些(编译Boost庞然大物,学习Boost.Python,确保它适用于C ++ / CLR,增加目标文件大小)是值得的。

答案 2 :(得分:1)

IronPython using DLR可能是要走的路。请注意,它不会是最快的方式,但如果你要做很多事情,它似乎值得追求。 Another useful link

答案 3 :(得分:0)

ironclad项目开始允许使用IronPython的CPython扩展,特别是SciPy / NumPy。我不知道它有多可用(以及它的开发程度如何)