c#调用Python脚本并实现参数互传--pythonnet

文章目录

  • 前言
  • 一、安装python环境
  • 一、在nuget管理包上下载的Pythonnet安装包
  • 二、C#中调用python代码
  • 二、C#中调用python源码如下:

前言

  • Windows平台,在实际C#项目开发中,让python成为C#的脚本语言,可以大大提高C#程序的可扩展性与灵活性,大大提高开发效率,特别是针对多变的业务逻辑的优秀构架.
  • c#调用python脚本的几种方式:
    c#调用Python脚本并实现参数互传--pythonnet_第1张图片

一、安装python环境

------具体教程:https://blog.csdn.net/qq_40969467/article/details/827638781.
------本文安装的python3.7

一、在nuget管理包上下载的Pythonnet安装包

Github项目地址:https://github.com/pythonnet/pythonnet

  • 仅.netstandard2.0库,注意c#项目框架

c#调用Python脚本并实现参数互传--pythonnet_第2张图片

二、C#中调用python代码

  • 初始化python模块
  • 注意:本示例Python安装的是64位版本,故C#项目设置时也应选择X64编译环境
 //指定系统中python37.dll路径,不然会报BadPythonDllException错误(不能少)
Runtime.PythonDLL = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
                                @"Programs\Python\Python37\python37.dll");
PythonEngine.Initialize(); 
  • 完整调用的代码如下:
using Python.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace PythonNetDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //指定系统中python37.dll路径,不然会报BadPythonDllException错误(不能少)
            Runtime.PythonDLL = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
                                 @"Programs\Python\Python37\python37.dll");
            //Runtime.PythonDLL = @"python-3.7.0\python37.dll";
            PythonEngine.Initialize();
            using (Py.GIL())
            {
                dynamic np = Py.Import("numpy");
                dynamic np1 = Py.Import("test3");
                Console.WriteLine(np1.Add(2));
                Console.WriteLine(np.cos(np.pi * 2));

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

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

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

                dynamic b = np.array(new List<float> { 6, 5, 4 }, dtype: np.int32);
                Console.WriteLine(b.dtype);

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

二、C#中调用python源码如下:

Csdn下载链接:https://download.csdn.net/download/qiangpi6057/87386194

你可能感兴趣的:(python,c#,开发语言)