用C#调用运行CPython函数

4
我正在处理一个项目,需要运行一个依赖于SciPy/NumPy的Python函数。由于这是对一个已经在进行中的项目的增强,因此使用IronPython将不是一个选项。
附加信息:
- Python.NET似乎是一个好选择,但我无法从RunString()获得返回值(它只会返回NULL)。 - 传递参数和捕获返回值(一个元组)是必要的。 - 该函数位于由支持小组为团队创建的统计软件包中,因此也无法修改该软件包。
我很迷茫,不知该怎么办。任何指向正确方向的提示都将不胜感激。感谢您提供的任何帮助!
我知道这可能非常模糊,但我不能明确说明项目细节。如果需要澄清,请告诉我,我会尽力而为!
4个回答

3

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


谢谢!我会调查这个。 - Eonxre

1

它需要在Windows之外进行移植吗?如果不需要,也许您可以使用C++/CLI嵌入CPython解释器,将其包装在一个漂亮的.Net界面中,并从C#中使用生成的代码。我从未尝试过这样做,所以我不知道它是否会起作用。

无论您选择哪种方法,无论是通过“编写本地DLL”还是通过Boost.Python嵌入Python,都可能更容易,尽管我不确定您的包装器代码是否足够大,以使所有这些(编译Boost庞然大物,学习Boost.Python,确保它与C++/CLR一起工作,增加目标文件大小)都值得。


1

谢谢!我会仔细阅读一下,看看这是否适合我。 - Eonxre

0

Ironclad 项目的起源是为了让 IronPython 能够使用 CPython 扩展,特别是 SciPy/NumPy。我不知道它有多可用(以及它目前是否还在积极开发中)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接