c#与python 交互(调用第三方库)
我是文明,文章来源于项目实践,以下即代表我的个人认同与看法,有不同看法的可以留言哈,谢谢你的阅读,文章有错字或代码错误请指正,谢谢你哦。
由于项目项目需求,必须使用python的方式研发项目,使用c#调用python。
1、项目需求:
使用python的方式叠加遥感tifi影像!python代码制图!使用的第三方库有:
2、Ironpython
实验一:使用c# Ironpython 库,必须安装python和集成环境,IronPython 是一种在 NET 和 Mono 上实现的 Python 语言,使用动态类型系统以让更多脚本语言能很容易地移植到NET Framework上。但是不能使用pip安装(我最喜欢pip了,可惜了),因为pip没有.egg文件,必须引用.egg的文件才能使用。第二,安装过程的有点麻烦!想哭!啊!!!!!!!。
如果没有底三方库的话,这个Ironpython包完美!但是我的项目三方库不少呀,做为小白的我,直接放弃!!!!(笑脸表情哈哈)
调用核心代码:
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;ScriptEngine PyEngine = Python.CreateEngine();
ScriptScope PyScope = PyEngine.CreateScope();
ScriptSource PySource = PyScope.CreateScriptSourceFromFile("test01.py");
PySource.Execute(PyScope);
3、pyInstaller To exe
//download.csdn.net/download/wenming111/10668853?utm_source=bbsseo 这里有下载链接,实现不了可以留言!谢谢!!
1、思路:
使用pyInstaller 把第三方包等生成exe文件,c#调用他,接受参数sys.argv[1] Process.StartInfo.Arguments方法传递参数
核心代码如上!这个方法堪称完美!我是太懒了就使用了这个比较简单的方法了!应为本项目需要必须打包成独立程序,不能让客户也安装python和python环境吧!!!
2、具体调用如下:
using System.Diagnostics; Process process = new Process();process.StartInfo.FileName = Application.StartupPath + @"readimagecv2.exe";process.StartInfo.UseShellExecute = false; //必需process.StartInfo.RedirectStandardOutput = true;//输出参数设定process.StartInfo.RedirectStandardInput = true;//传入参数设定process.StartInfo.CreateNoWindow = true;process.StartInfo.Arguments = "ur'F:/matplotlib/ano_2014364.tif' ur'F:/matplotlib/geosj.tif' ur'F:/matplotlib/ano_2014364.shp'";//参数以空格分隔,如果某个参数为空,可以传入””process.Start();string output = process.StandardOutput.ReadToEnd();//结果process.WaitForExit();//等待外部程序退出process.Close();
path =sys.argv[1] #接收第一个参数sjpath = sys.argv[2] #接收第二个参数shpfilename =sys.argv[3] ##接收第三个参数
如果不封装,可以在cmd中直接调用,封装之后就不能使用了,(如果,不打包成exe,直接调用.py文件,加参数,是绝对可以运行的,但是实践证明,打包成exe之后就不那么好用了,但是,如果想继续传参的话,使用配置文件是个不错的方法)
注:如果c#在执行process.Start()中出错,请调用bat文件执行命令。略
3、出现的问题:传参exe:c#在执行process.Start()错误:找不到文件系统
解决方案:1)在cmd命令行中执行传参代码,出现”failed to execute script 脚本名” 请检查参数,或者打包文件由问题,请使用
failedtoexecutescript解决方案+命令行执行传参exe_Failedtoexecutescript-Python工具类资源-CSDN下载 命令行执行
2)c#在执行process.Start()错误:找不到文件系统 请将文件放到c盘执行,Windows10 对有不同磁盘的电脑存在权限问题,尝试放在c盘和不放在c盘执行操作。如果以上方式不友好,请使用3.
3)使用配置文件如xml、ymal方式在c#与python之间传递参数。
c#中使用解析类进行模块编写:
/*ymal文件格式:WorkPath:Path:
*///解析yml类:private string MapConfigFile="F:\\wk\\plot.ymal";private MapConfigSet cfg;public void ReadConfig(){this.cfg = Deserializer<MapConfigSet>(MapConfigFile);}public static T Deserializer<T>(string _file){if (!File.Exists(_file)){throw new FileNotFoundException();}StreamReader yamlReader = File.OpenText(_file);Deserializer yamlDeserializer = new Deserializer();T info = yamlDeserializer.Deserialize<T>(yamlReader);yamlReader.Close();return info;}/// <summary>/// 保存配置/// </summary>public void SaveConfig(){StreamWriter yamlWriter = File.CreateText(MapConfigFile);Serializer yamlSerializer = new Serializer();yamlSerializer.Serialize(yamlWriter, this._cfg);yamlWriter.Close();}//ymal 结构 public class Config{ public Workpath WorkPath { get; set; }}public class Workpath{public string Path { set; get; }}
python中使用:
config_path="F:/wk/plot.ymal"
file_yaml = open(config_path) # 读取参数配置文件yaml_parameter = yaml.load(file_yaml)path = yaml_parameter["WorkPath"]["Path"]
通过以上核心代码可实现c#与python的参数交互;
文字内容来源于实践!实践的东西最真实,至少我已经成功了 哈哈
打包之后的大小,因为包比较多,所以在自动打包的过程中比较大
4、声明
1、以上通过本人测试与调试,是在项目中实践的方法,经过论证,可以实现,如有问题,请留言,谢谢你的阅读!
2、转载请标注来源,感谢你的阅读!
c#与python 交互(调用第三方库)相关推荐
- python pip安装第三方库老是报错_#python pip 安装dlib一直失败?#python安装dlib错误...
#python pip 安装dlib一直失败?#python安装dlib错误 python dlib 教程2020-10-11 07:52:36人已围观 ubuntu里面怎么安装dlib 下面是在ub ...
- 【QMT】给QMT量化交易软件安装和调用第三方库(举例通达信pytdx,MyTT,含代码)
给QMT量化交易软件安装和调用第三方库(举例通达信pytdx,MyTT,含代码) 一.安装QMT 二.给QMT安装python 三.给QMT的python环境安装第三方库 1.准备python虚拟环境 ...
- python基础和第三方库 笔记(python基础完结包括高级用法,第三方库持续更新中...)
python基础 注:本笔记面向有一定基础的人 本笔记是本人快速复习python过程中记录的,不适合零基础的人学习python的主工具,可以作为辅工具,本笔记记录了入门阶段常用操作,如有错误的地方,希 ...
- 吐血整理——python常用的第三方库——库名称简介
python常用的第三方库--库名称简介(一) python常用的第三方库--库名称简介(一) python常用的第三方库--库名称简介(一) 库名称简介 文件处理 库名称简介 Chardet字符编码 ...
- Python 图像处理 PIL 第三方库详细使用教程(更新中)
Pillow 库 基本概述 Python Pillow PIL 库的用法介绍,Pillow库是一个Python的第三方库. 要点:PIL库是一个具有强大图像处理能力的第三方库,不仅包含了丰富的像素.色 ...
- Python pip安装第三方库的国内镜像
Python pip 安装第三方库的国内镜像 Windows系统下,一般情况下使用pip在DOS界面安装python第三方库时,经常会遇到超时的问题,导致第三方库无法顺利安装,此时就需要国内镜像源的帮 ...
- python中调用c库
python中调用c库 2013-04-23 15:34:52| 分类: python核心编程 | 标签:python makefile |举报 |字号 订阅 参考地址:http://my. ...
- python安装第三方包总是超时_(python pip安装第三方库超时问题(raise ReadTimeoutErrorself._pool, None, 'Read timed out.')...
(python pip安装第三方库超时问题(raise ReadTimeoutErrorself._pool, None, 'Read timed out.') pip工具安装 百度经验链接: pip ...
- python离线安装第三方库
python离线安装第三方库 本人也是一枚小白,欢迎大佬们批评指正! 当服务器是未联网状态时,在环境中安装第三方包就很不方便.下面是自己学习过多篇文章后,结合自己实际安装步骤,写的一点总结. 1. 在 ...
- 【Python软件和第三方库国内地址】
Python软件和第三方库国内地址 提示:国外地址下载半天,总失败 文章目录 Python软件和第三方库国内地址 前言 一.安装Python 1.[国内华为镜像](https://mirrors.hu ...
最新文章
- javascript基础语法——表达式
- 【 MATLAB 】Contour plot of matrix(矩阵的等高线图)
- vue-cli3 中跨域解决方案
- ida android sign加密,最右sign-v2签名算法追踪及逆向还原
- 全国计算机二级公共基础知识练习,2020年全国计算机二级公共基础知识练习题(7)...
- 20年IT老兵分享:账务系统设计及应用--转
- 沙雕同事一来公司就把高并发的程序搞崩了,我心态也蹦了!
- 24-hadoop-hiveserver2jdbc-正则数据导入
- Maven 打包时不执行测试用例
- .NET Core微服务之基于Exceptionless实现分布式日志记录
- ExtJs的Reader
- mysql query cache
- php sql慢查询,Select多行SQL语句慢查询优化
- Rocketmq技术分享
- VB 用zint 库生成PDF417及其他条码
- 编译Android 4.4.4 r1的源码刷Nexus 5手机详细教程
- itunes store服务中断_Apple目前正在经历App Store iTunes Store和Mac App Store的中断
- php汉字首字母缩写,中文转拼音缩写(php版本复制可用)
- 台当局死磕美国Uber
- 用网站怎么赚钱?具体点!聊聊用网站赚钱的方法