您当前的位置: 首页 >  Python

寒冰屋

暂无认证

  • 3浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

如何在 C# 中运行 Python 代码

寒冰屋 发布时间:2022-08-04 21:30:00 ,浏览量:3

前言

Python是一门强大的编程语言。特别的是,它还具有众多出色的库(例如numPy,sciPy,pandas等),可以显著简化和加速开发。因此,在解决某些问题时,通过 Python 实现可能是最理想的方式!

但是,我们又希望代码能在 C# 中运行。

那么,可以试试pythonnet

pythonnet

pythonnet可以将 Python 代码集成运行在 .NET 4.0+ 的公共语言运行时(CLR)中。

需要注意的是,它并不是将 Python 代码编译成 IL 代码,而是将 Python 的 CPython 引擎与 .NET 运行时集成,以保证 CLR 可以使用现有的 Python 代码和 C-API 扩展,同时保持 Python 代码的本机执行速度。

Demo 1. 创建项目

创建一个控制台项目,引用 pythonnet Nuget 包。

注意,必须勾选“包括预发行版”,才能看到官方维护的 Nuget 包:

计算机上需要安装 Python 3

2. 初始化

需要先设置Runtime.PythonDLL属性, 否则程序会抛出BadPythonDllException

具体文件位置对应你安装的 Python 版本和文件夹:

Runtime.PythonDLL = Path.Combine(Environment.GetFolderPath(
    Environment.SpecialFolder.LocalApplicationData),
    @"Programs\Python\Python310\python310.dll");

PythonEngine.Initialize();
3. 使用 Python 库

所有对 python 的调用都必须在一个using (Py.GIL())块中。

使用Py.Import导入 python 模块后,你就可以正常调用对应的函数:

这里,我们使用了numpy库(需要已经 pip install):

dynamic np = Py.Import("numpy");
Console.WriteLine(np.pi);
4. 使用 Python 脚本

我们也可以执行 Python 脚本代码。

首先,创建DemoCode.py文件,定义了Demo类和SayHello方法,代码如下:

class Demo:
    def SayHello(self, name):
        return "Hello " + name

调用代码如下:

dynamic demoCode = Py.Import("DemoCode");  
//实例化 Demo 类
dynamic demo = demoCode.Demo();  
//调用 Demo 类的 SayHello 方法
Console.WriteLine(demo.SayHello("MyIO"));

最后,运行结果如下图:

结论

利用pythonnet,在 C# 中运行 Python 代码就是这么简单!

关注
打赏
1665926880
查看更多评论
立即登录/注册

微信扫码登录

0.1256s