C#--调用Python(包含第三方库)

news2025/1/18 9:59:41

1. C# 调用 Python 常见的方法有4种

参考链接

1.1 Pythonnet (推荐)

可以很好的支持第三方库。
推荐这个,经本人验证这个很好用。
后文 2. 详细使用。

1.2 IronPython

如果使用第三方库就放弃这个吧,真的用不了,使用时报各种错。
如果只是标准库,可以用这个。

只需要在 nuget 里装上 IronPython 和 IronPython.StdLib 即可。

在这里插入图片描述
使用参考链接

1.3 利用C#的 process 方式

弊端:
1.当传入参数过长时,此方式是用不了的。会报错,没有解决办法。
2.需要安装python环境,并在程序中指定 pyython.exe 位置,及 脚本.py的位置。

1.3.1 示例演示

此方式类似执行命令加参数,如:

#demo.py
import sys

def str_add(str1, str2):
    print("11111")
    return int(str1) + int(str2)


if __name__ == '__main__':
    print(str_add(sys.argv[1],sys.argv[2]))

在这里插入图片描述

1.4 使用C++调用Python,然后将C++程序做成动态链接库

这个实现很复杂,不了解C++的就很难搞了,也不推荐。

2.Pythonnet 详细使用

gitee repositroy

3. 利用C#的 process 方式 详细使用

实现其实就一个方法,套用即可。

private string RunPythonByexe(string scriptName, params string[] args)
{
    string result= null;
    try
    {
        using (var p = new Process())
        {
            string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
            p.StartInfo.FileName = _pyexeLocation;//指定 python.exe 位置
            p.StartInfo.Arguments = _pyLocation + scriptName;	//指定脚本位置及名字,也就是上面例子的 .\demo.py

            foreach (var item in args)
            {
                p.StartInfo.Arguments += " \"" + item.ToString() +"\""; //指定参数  若参数无空格可以不加双引号扩住,参数全部都加双引号是最好的
            }

            p.StartInfo.UseShellExecute = false;

            p.StartInfo.RedirectStandardOutput = true;

            p.StartInfo.RedirectStandardInput = true;

            p.StartInfo.RedirectStandardError = true;

            p.StartInfo.CreateNoWindow = true;
            p.Start();

            while (!p.StandardOutput.EndOfStream)
            {
                result += p.StandardOutput.ReadLine();
            }

            p.WaitForExit();
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
    
    return result;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/829355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大规模向量检索库Faiss学习总结记录

因为最近要使用到faiss来做检索和查询,所以这里只好抽出点时间来学习下,本文主要是自己最近学习的记录,来源于网络资料查询总结,仅用作个人学习总结记录。 Faiss的全称是Facebook AI Similarity Search,是FaceBook的A…

【C语言进阶篇】结构体都学完了,那么现造第一个通讯录呢?(内附源码)

🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言一 、 通讯录的简介1.1 联系人的类型定义1.2 通讯录的定义1.3 通讯录要实现的功能 二 、 如何…

Android平台如何实时叠加电量信息和设备信号状态到GB28181接入端

技术背景 我们在Android平台实现GB28181设备接入,把摄像头和麦克风数据,采集过去,用于移动单兵、智能车载、智慧安防、智能家居、工业仿真等行业时,发现大多场景对视频水印的要求越来越高,从之前的固定位置静态文字水…

Python(六十)字典的创建

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

Kubernetes——理论基础

Kubernetes——理论基础 一、Kubernetes 概述1.K8S 是什么?2.为什么要用 K8S?3.Kubernetes 主要功能 二、Kubernetes 集群架构与组件三、Master 组件1.Kube-apiserver2.Kube-controller-manager3.Kube-scheduler4.配置存储中心——etcd 四、Node 组件1.Kubelet2.Ku…

城市供水管网水力模型的基本概念及理论

1.1引言 城市供水管网系统由大量管材各异、管径各异、铺设年代各异的管道,泵站,阀门, 水塔等多元素构成,因此决定了供水管网系统是一个拓扑结构庞杂、运行工况多变的巨系统。以前国内供水公司对铺设在地面以下的供水管网多以经验…

HCIP的mgre实验

题目 拓扑图 IP地址配置和缺省 R1 [r1]int g0/0/1 [r1-GigabitEthernet0/0/1]ip add 192.168.1.1 24 Aug 2 2023 20:38:20-08:00 r1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP on the interface GigabitEthernet0/0/1 has entered the UP state. [r1-GigabitEtherne…

【雕爷学编程】Arduino动手做(181)---Maixduino AI开发板4

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

云环境中使用飞蛾火焰和萨尔普群算法组合的工作流调度(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

AcWing 202. 最幸运的数字

AcWing 202. 最幸运的数字 思路&#xff1a; Code: #include<bits/stdc.h> using namespace std; typedef long long LL; int gcd(LL n,int m) {return m?gcd(m,n%m):n; } LL get_euler(LL x) { //求欧拉函数LL resx;for(int i2;i<x/i;i) {if(x%i0) {while(x%i0)…

经典CNN(三):DenseNet算法实战与解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 1 前言 在计算机视觉领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09;已经成为最主流的方法&#xff0c;比如GoogleNet&#xff0c;…

结算功能实现(小兔鲜儿)【Vue3】

退出登录 - 清空购物车列表 业务需求 在用户退出登录时,除了清除用户信息之外,也需要把购物车数据清空 // 清除购物车const clearCart () > {cartList.value []}// 退出时清除用户信息const clearUserInfo () > {userInfo.value {}// 执行清除购物车的actioncartS…

2023年攻防演练利器之必修高危漏洞合集(包含详细修复建议)

2023年攻防演练利器之必修高危漏洞合集&#xff08;包含详细修复建议&#xff09; 下载地址见盘&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1WeCC7oXFieDs4tBOh7bmWA?pwd12u4 提取码&#xff1a;12u4

PyTorch 中的累积梯度

https://stackoverflow.com/questions/62067400/understanding-accumulated-gradients-in-pytorch 有一个小的计算图&#xff0c;两次前向梯度累积的结果&#xff0c;可以看到梯度是严格相等的。 代码&#xff1a; import numpy as np import torchclass ExampleLinear(torch…

MongoDB文档--基本安装-linux安装(mongodb环境搭建)-docker安装(挂载数据卷)-以及详细版本对比

阿丹&#xff1a; 前面了解了mongodb的一些基本概念。本节文章对安装mongodb进行讲解以及汇总。 官网教程如下&#xff1a; 安装 MongoDB - MongoDB-CN-Manual 版本特性 下面是各个版本的选择请在安装以及选择版本的时候参考一下&#xff1a; MongoDB 2.x 版本&#xff1a…

TensorRT学习笔记--基于YoloV8检测图片和视频

1--完整项目 完整项目地址&#xff1a;https://github.com/liujf69/TensorRT-Demo git clone https://github.com/liujf69/TensorRT-Demo.gitcd TRT_YoloV8 2--模型转换 cd yolov8python gen_wts.py 3--编译项目 mkdir buildcd build cmake .. # 需要更改 CMakeLists.txt…

postgresSQL Extended Query执行过程和sharding-proxy的处理

pg Extended Query PostgreSQL: Documentation: 15: 55.2. Message Flow 多个阶段&#xff0c;可复用 Parse → DESCRIBE statement → SYNC Parse 解析&#xff0c; 将 sql 文本字符串&#xff0c;解析成 named preparedStatement 语句&#xff08;生命周期随session&#x…

数据安全能力框架模型-详细解读(一)

8月30日&#xff0c;奇安信集团正式发布“数据安全能力框架”&#xff0c;以及“数据安全概念运行图”&#xff08;数据安全ConOps&#xff09;&#xff0c;旨在为数字化转型不断深入的大型政企客户以及业内伙伴&#xff0c;提供基于甲方视角的数据安全全面图景&#xff0c;以及…

GESP2023年6月C++一级客观题

一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 以下不属于计算机输出设备的有&#xff08; &#xff09;。 A. 麦克风 B. 音箱 C. 打印机 D. 显示器 ChatGPT 是 OpenAI 研发的聊天机器人程序&#xff0c;它能通过理解和学习人类的语言 来进行对话&#xf…

ES6之Promise、Class类与模块化(Modules)

目录 PromiseClass类extendssuper Modules 模块系统export default 和对应importexport 和 import Promise Promise 是 ES6 引入的一种用于处理异步操作的对象。 它解决了传统回调函数&#xff08;callback&#xff09;模式中容易出现的回调地狱和代码可读性差的问题。 Promis…