【发布时间】:2020-06-11 07:07:02
【问题描述】:
我们有一个大型 C# 应用程序,想在 C# 中包含一个用 python 和 cython 编写的应用程序
操作系统:Win 10 蟒蛇:2.7 .NET:4.5+
我正在这里寻找各种实施方案。 (1) pythonnet - 将 python 嵌入到 C# 应用程序中,如果我有 abc.py 并且在 C# 中,而 abc.py 有一行“import numpy”,它是否知道如何在 C# 中包含所有 python 的依赖项?
(2) 将 python 转换为 .dll - 如果我错了,请纠正我,在 clr.CompileModules 中包含所有 python 文件和库似乎是一件令人头疼的事情。有没有自动解决方案? (而 clr 似乎是迄今为止我发现的从 python 构建 dll 的唯一解决方案。
(3) 将C#的.exe转换为.dll - 我不知道我是否可以这样做,我只有pyinstaller构建的abc.exe
(4) 共享内存似乎是另一种选择,但设置会更复杂,更不稳定? (因为还需要处理一个组件?)
(5) 消息传递 - zeromq 可能是它的候选者。
要求: C# 和 python 都有很多类和对象,它们需要持久化 C#应用程序需要与Python应用程序交互 它们是实时运行的,因此通信性能确实很重要,以毫秒为单位。
我相信有人应该经历过类似的情况,我正在寻求建议以找到最合适的解决方案,以及上述解决方案的优缺点。 稳定性是第一位的,然后解决方案越简单越好。
【问题讨论】:
-
这个问题不适合 S.O.检查这个:ironpython.net
-
感谢 Gusman,我确实尝试过 Ironpython,但遇到了 Ironpython 不支持某些 Python 库(例如 numpy)的问题。因此,它已经从我的列表中删除了
-
我遇到了类似的问题......需要将一堆变量从 C# 传递给 python,我知道技术上共享内存可以工作......但在此之前我想寻求简单的解决方案这允许我在 C# 中无缝调用 python 方法,就像我调用另一个 C# 方法一样(或者它不存在??)我仍在研究...如果你找到任何好的方法,请告诉我!
标签: c# python-2.7 zeromq shared-memory python.net