在C#中运行CPython函数
我正在做一个项目,需要运行一个依赖于SciPy和NumPy的Python函数。因为这是一个正在进行中的项目的附加功能,所以不能使用IronPython。
补充信息:
- Python.NET 看起来是个不错的选择,但我无法从 RunString() 中获取返回值(它只会返回NULL)。
- 需要传递参数并捕获返回值(一个元组)。
- 这个函数是在一个统计软件包中,由团队的支持小组创建,所以也无法对其进行修改。
我现在很迷茫,不知道该怎么办。任何指引都非常感谢!谢谢你们的帮助!
我知道这可能说得比较模糊,但我不能提供项目的具体细节。如果需要任何澄清,请告诉我,我会尽力而为!
4 个回答
1
使用IronPython和DLR可能是个不错的选择。要知道,这可能不是最快的方式,但如果你打算经常这样做,这似乎是值得尝试的。还有另一个有用的链接。
1
你需要这个程序在Windows以外的地方也能用吗?如果不需要的话,你可以试试把CPython解释器嵌入到C++/CLI中,然后用一个好看的.Net风格的接口把它包装起来,这样就可以从C#中使用了。不过我没试过,所以不确定这样是否能成功。
无论你选择这种方法还是“写一个本地DLL”的方法,使用Boost.Python来嵌入Python可能会更简单。不过我不太确定你的包装代码是否足够大,能让这一切(编译Boost这个庞然大物、学习Boost.Python、确保它能和C++/CLR一起工作、增加你的目标文件大小)变得值得。
3
我想你可以写一个DLL(动态链接库),利用CPython的接口来暴露这个功能,然后在C#中调用它?其实是可以把Python解释器嵌入到其他程序里的;虽然我自己没做过,但我觉得这样做会很有用:http://docs.python.org/extending/embedding.html