是否可以将 PyPy 嵌入到 .NET 应用程序中?

Posted

技术标签:

【中文标题】是否可以将 PyPy 嵌入到 .NET 应用程序中?【英文标题】:Is it possible to embed PyPy into a .NET application? 【发布时间】:2011-08-30 09:26:03 【问题描述】:

我想将 Python 解释器嵌入到我的 .NET 应用程序中。我当然知道 IronPython,但我对 PyPy 特别感兴趣,因为它的无堆栈支持和微线程。

然而,虽然 PyPy 可以针对 CLI 构建,但看起来它只是为您提供了一个独立的 Python 解释器,例如 python.exe。我找不到任何文档来构建可以实际嵌入到 .NET 主机应用程序中的东西。

有没有办法使用(无堆栈)PyPy 从 .NET 应用程序运行 Python 脚本,并允许这些脚本与宿主应用程序提供的 CLR 对象进行交互?

【问题讨论】:

可能有一种方法可以将pypy构建为dll,因此可以在c#内部使用 【参考方案1】:

PyPy 的 CLI 后端不如 C 后端成熟,也不能与 .NET 库集成。虽然编译为 C 的普通 PyPy 已准备好生产,但我不会称 .NET 版本已准备好生产。它还缺少 JIT(尽管在这方面已经完成了一些工作)和微线程。除非有人介入,否则 IronPython 似乎是目前唯一可行的选择。

【讨论】:

【参考方案2】:

不,没有。 CPython 能够使用在 github 上维护的 Python for .NET(参见 http://pythonnet.github.io/)访问 .NET 库,但除了 IronPython 之外,从来没有一种方法可以将 Python 解释器实际嵌入到 .NET 应用程序中。这是它的主要卖点之一。

在相关说明中,IronPython(默认情况下)在递归方面比 CPython 具有更小的堆栈大小。也就是说,您必须将“-X:FullFrames”命令行选项传递给 ipy.exe 以启用 CPython 式堆栈帧。知道这不如 PyPy...但它可能会有所帮助:)

【讨论】:

Python Dot Net 并没有完全消亡。最新文件位于:sourceforge.net/projects/pythonnet/files 和颠覆统计:sourceforge.net/project/stats/… PythonNET 现在在 github 上,还没有死! 我们正在使用 cpyext 在 pythonnet 中支持 PyPy:***.com/q/42152122/2230844

以上是关于是否可以将 PyPy 嵌入到 .NET 应用程序中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将非托管 C++ 表单嵌入到 .NET 应用程序中?

使用带有嵌入式 PyPy 的外部“Python”样式 cffi 回调

将.net treeview 嵌入到 vba 中?

Microsoft OCS 是不是可以嵌入到 asp.net 网页中。需要多长时间?

可以将 DLL 合并到 .NET EXE 中吗? [复制]

可以将 WinForms 嵌入到 VCL Delphi 应用程序中吗?