【问题标题】:Run python module in C#?在 C# 中运行 python 模块?
【发布时间】:2010-01-25 19:58:42
【问题描述】:

过去两天我一直在努力寻找是否可以在 C# 中运行 python 模块。我感兴趣的模块是 Sympy,可以在这里找到http://code.google.com/p/sympy/(如果有人感兴趣的话)。这是一个数学库,这个库可以满足我的需要。我还没有找到同样好的 C# 库(我测试了 math.net 和其他..)

通过搜索谷歌,我发现您可以使用 IronPython 在 C# 中执行 python 代码。还没有找到任何使用 IronPython 或 PythonNet 模块的真正好例子。

谁能告诉我是否可以在 C# 中使用 python 模块,他会推荐 IronPython 或 PythonNet。另外,如果可能的话,这是否意味着我的 APP 需要安装 python 编译器才能工作,还是引用的 dll 就足够了?

【问题讨论】:

  • 您想将 Python 代码编译为 MSIL,还是想从 C# 以编程方式调用 Python 应用程序?
  • 好吧,我用谷歌搜索了 MSIL,但我真的不知道我想做什么,我只能告诉你,我希望能够像使用 C# 一样使用该模块图书馆,如果可能的话。哦,我从来没有使用过 python,所以我不太习惯它的术语,但是 afaik 不是 python 模块 == c# 库?
  • 为什么要使用 C#?另外,为什么不制作一个 Python 可执行文件,它在标准输入上接受输入并在标准输出上吐出输出?

标签: c# python module ironpython python.net


【解决方案1】:

我不知道在 c# 中加载 python 库会有多好,但我会通过 IronPython 编写我的程序。

然后您可以将其编译为 exe,这样您的用户就不会知道其中的区别。

现在这是猜测,但也许您可以在其他 c# 项目中加载您的程序集并以这种方式使用它。即用 ironpython 包装 python 库,然后在 c# 中加载它

它并不优雅,但我敢打赌它会起作用。

【讨论】:

  • 问题是,在这种情况下,我只能使用 C#。但是感谢您的回答,我会尝试更多地研究您的建议,看看结果如何。
  • 我仍然认为你最好的选择可能是用 c# 程序集包装那个 python 库,然后在你的 c# 世界中加载那个程序集,但也许其他人有更好的主意。不仅仅是将库直接移植到 c#..
【解决方案2】:

我知道这是一个老问题,但它可能会对某人有所帮助:)

因此,您可以将您的 python 脚本放入您的 Anaconda3\Lib\site-packages 文件夹,并在他们的 wiki 页面中使用 pythonnet 示例:

static void Main(string[] args)
{
    using (Py.GIL())
    {
        dynamic foo = Py.Import("your_script_name");
    }
}

并且引用的 dll 应该可以完成这项工作。 对于 Iron Python,我认为它仅支持 python 2.x,并且不再由作者管理,因此可能有点复杂。 此外,您可能需要注意 Python GIL 的 IIS 线程问题,一段时间后它可能会变得非常痛苦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2023-04-08
    • 2023-03-29
    • 2013-03-02
    • 1970-01-01
    相关资源
    最近更新 更多