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

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 sysdef 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.pyforeach (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.hqwc.cn/news/56639.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSM的知识点考试系统java在线问答试卷管理jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 SSM的知识点考试系统 系统1权限:管理员 …

开源免费用|Apache Doris 2.0 推出跨集群数据复制功能

随着企业业务的发展,系统架构趋于复杂、数据规模不断增大,数据分布存储在不同的地域、数据中心或云平台上的现象越发普遍,如何保证数据的可靠性和在线服务的连续性成为人们关注的重点。在此基础上,跨集群复制(Cross-Cl…

一文教你看懂Golang协程调度【GMP设计思想】

一文教你看懂Golang协程调度【GMP设计思想】 1 Golang调度器的由来 1.1 单进程的问题:进程阻塞、CPU浪费时间 单一执行程序、计算机只能一个任务一个任务来进行处理进程阻塞所带来的CPU浪费时间 1.2 多进程、多线程问题:设计复杂、高内存、CPU占用 设计…

ad+硬件每日学习十个知识点(24)23.8.4(时序约束,SignalTap Ⅱ)

文章目录 1.建立时间和保持时间2.为什么要建立时序约束?3.SignalTap Ⅱ4.SignalTap Ⅱ使用方法5.HDL的仿真软件(modelsim)6.阻抗匹配 1.建立时间和保持时间 答: 2.为什么要建立时序约束? 答: 3.Sign…

Xposed回发android.os.NetworkOnMainThreadException修复

最近用xposed进行hook回发的时候,又出现了新的问题; android.os.NetworkOnMainThreadException; 在Android4.0以后,写在主线程(就是Activity)中的HTTP请求,运行时都会报错,这是因为…

【云原生】Docker-compose中所有模块学习

compose模块 模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 docker run 相关参数的含义都是类似的。 默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。 version: "3&quo…

node爬取中国行政区域geo数据

依赖 {"dependencies": {"axios": "^1.4.0","colors": "^1.4.0","express": "^4.18.2","fs": "^0.0.1-security"} }数据来源 https://datav.aliyun.com/portal/school/atlas/are…

c++实现Qt信号和槽机制

文章目录 简介信号槽信号与槽的连接 特点观察者模式定义观察者模式结构图 实现简单的信号和槽 简介 信号槽机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信号与槽来代替函数指针,使程序更安全简洁。  信号和槽机制是 Qt 的核心…

ViSQOL、PESQ、mosnet等mos分打分工具和Polqa语音感知音质打分测评

原创:转载需附链接: https://blog.csdn.net/qq_37100442/article/details/132057139?spm1001.2014.3001.5502 一、背景 Mos分评价音质重要指标,最近也有很多机构和公司在研究适合自己的评价体系。目前Mos分主要分为主观评测和客观感知评价。…

【项目多人协作的困扰】git-cli 解决 git merge 合并时 lock 文件变化,忘记重新安装依赖的问题

项目多人协作的困扰 相信大家多多少少都遇到过,当主线分支的代码,合入到自己的分支的时候,如果这时候,主线中有一些依赖的更新或者添加或者删除,如果合入之后,没有及时的install的话,项目启动的…

从零构建深度学习推理框架-6 构建计算图

PNNX PNNX项目 PyTorch Neural Network eXchange(PNNX)是PyTorch模型互操作性的开放标准。PNNX为PyTorch提供了一种开源的模型格式,它定义了与Pytorch相匹配的数据流图和运算图,我们的框架在PNNX之上封装了一层更加易用和简单的计…

[Flask]SSTI1

根据题目提示,这关应该是基于Python flask的模版注入,进入靶场环境后就是一段字符串,而且没有任何提示,有点难受,主要是没有提示注入点 随机尝试一下咯,首先尝试一下guest,GET传参 但是没有反应…