栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

C# 中调用 Python 库的方法 (.Net 6.0)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C# 中调用 Python 库的方法 (.Net 6.0)

利用 Pythonnet 在 C# 中调用 Python 库的学习过程记录下来。

1、先打开VS 2022 ,创建一个控制台APP,选择 .Net 6.0。

2、在NeGet中搜索 “Pythonnet”,我选择了 “pythonnet_netstandard_py37_win” 版本。 

3、由于选择了 py37_win 版本,那么就要安装 Python 3.7版本喽。

下载地址如下:

https://www.python.org/ftp/python/3.7.9/python-3.7.9-amd64.exe

当然要手动安装一下啦,可能需要重启系统。

4、返回 VS,录入代码如下。(基本是从 Pythonnet 官网复制过来的)

using Newtonsoft.Json;
using Python.Runtime;

//测试在C#中调用Python库的方法,首先要安装 python 3.7的release版本,否则报错。

{
    using (Py.GIL())
    {
        dynamic np = Py.Import("numpy");
        Console.WriteLine(np.cos(np.pi * 2));

        dynamic sin = np.sin;
        Console.WriteLine(sin(5));

        double c = np.cos(5) + sin(5);
        Console.WriteLine(c);

        dynamic a = np.array(new List { 1, 2, 3 });
        Console.WriteLine(a.dtype);

        dynamic b = np.array(new List { 6, 5, 4 }, dtype: np.int32);
        Console.WriteLine(b.dtype);
        foreach (var item in a * b)
        {

             //这个是我加的,测试能不能序列化 dynamic  变量,然后再反序列为 int 类型
            var js = JsonConvert.SerializeObject(item.ToString());
            var m = JsonConvert.DeserializeObject(js);
            Console.WriteLine(m);

            //也可以直接拆箱为 int

             //var i = (int) item;
            //Console.WriteLine(i);
        }

        Console.WriteLine(a * b);
        Console.ReadKey();
    }
}
 

结果如下:

1.0
-0.9589242746631385
-0.6752620891999122
int32
int32
6
10
12
[ 6 10 12]
 

注: 运行环境是 Windows 10 。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/829392.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号