我是文明,文章来源于项目实践,以下即代表我的个人认同与看法,有不同看法的可以留言哈,谢谢你的阅读,文章有错字或代码错误请指正,谢谢你哦。

由于项目项目需求,必须使用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 交互(调用第三方库)相关推荐

  1. python pip安装第三方库老是报错_#python pip 安装dlib一直失败?#python安装dlib错误...

    #python pip 安装dlib一直失败?#python安装dlib错误 python dlib 教程2020-10-11 07:52:36人已围观 ubuntu里面怎么安装dlib 下面是在ub ...

  2. 【QMT】给QMT量化交易软件安装和调用第三方库(举例通达信pytdx,MyTT,含代码)

    给QMT量化交易软件安装和调用第三方库(举例通达信pytdx,MyTT,含代码) 一.安装QMT 二.给QMT安装python 三.给QMT的python环境安装第三方库 1.准备python虚拟环境 ...

  3. python基础和第三方库 笔记(python基础完结包括高级用法,第三方库持续更新中...)

    python基础 注:本笔记面向有一定基础的人 本笔记是本人快速复习python过程中记录的,不适合零基础的人学习python的主工具,可以作为辅工具,本笔记记录了入门阶段常用操作,如有错误的地方,希 ...

  4. 吐血整理——python常用的第三方库——库名称简介

    python常用的第三方库--库名称简介(一) python常用的第三方库--库名称简介(一) python常用的第三方库--库名称简介(一) 库名称简介 文件处理 库名称简介 Chardet字符编码 ...

  5. Python 图像处理 PIL 第三方库详细使用教程(更新中)

    Pillow 库 基本概述 Python Pillow PIL 库的用法介绍,Pillow库是一个Python的第三方库. 要点:PIL库是一个具有强大图像处理能力的第三方库,不仅包含了丰富的像素.色 ...

  6. Python pip安装第三方库的国内镜像

    Python pip 安装第三方库的国内镜像 Windows系统下,一般情况下使用pip在DOS界面安装python第三方库时,经常会遇到超时的问题,导致第三方库无法顺利安装,此时就需要国内镜像源的帮 ...

  7. python中调用c库

    python中调用c库 2013-04-23 15:34:52|  分类: python核心编程 |  标签:python  makefile   |举报 |字号 订阅 参考地址:http://my. ...

  8. python安装第三方包总是超时_(python pip安装第三方库超时问题(raise ReadTimeoutErrorself._pool, None, 'Read timed out.')...

    (python pip安装第三方库超时问题(raise ReadTimeoutErrorself._pool, None, 'Read timed out.') pip工具安装 百度经验链接: pip ...

  9. python离线安装第三方库

    python离线安装第三方库 本人也是一枚小白,欢迎大佬们批评指正! 当服务器是未联网状态时,在环境中安装第三方包就很不方便.下面是自己学习过多篇文章后,结合自己实际安装步骤,写的一点总结. 1. 在 ...

  10. 【Python软件和第三方库国内地址】

    Python软件和第三方库国内地址 提示:国外地址下载半天,总失败 文章目录 Python软件和第三方库国内地址 前言 一.安装Python 1.[国内华为镜像](https://mirrors.hu ...

最新文章

  1. javascript基础语法——表达式
  2. 【 MATLAB 】Contour plot of matrix(矩阵的等高线图)
  3. vue-cli3 中跨域解决方案
  4. ida android sign加密,最右sign-v2签名算法追踪及逆向还原
  5. 全国计算机二级公共基础知识练习,2020年全国计算机二级公共基础知识练习题(7)...
  6. 20年IT老兵分享:账务系统设计及应用--转
  7. 沙雕同事一来公司就把高并发的程序搞崩了,我心态也蹦了!
  8. 24-hadoop-hiveserver2jdbc-正则数据导入
  9. Maven 打包时不执行测试用例
  10. .NET Core微服务之基于Exceptionless实现分布式日志记录
  11. ExtJs的Reader
  12. mysql query cache
  13. php sql慢查询,Select多行SQL语句慢查询优化
  14. Rocketmq技术分享
  15. VB 用zint 库生成PDF417及其他条码
  16. 编译Android 4.4.4 r1的源码刷Nexus 5手机详细教程
  17. itunes store服务中断_Apple目前正在经历App Store iTunes Store和Mac App Store的中断
  18. php汉字首字母缩写,中文转拼音缩写(php版本复制可用)
  19. 台当局死磕美国Uber
  20. 用网站怎么赚钱?具体点!聊聊用网站赚钱的方法

热门文章

  1. ShadowLayout 实现阴影效果
  2. 小程序map组件一——使用腾讯地图个性化地图组件、腾讯云可视化大屏展示
  3. 【周末送新书】基于BERT模型的自然语言处理实战
  4. erlang游戏服务器
  5. Android Notification取消声音 取消弹出
  6. 如何做好一个软件测试管理者,高效带好团队呢?
  7. QT Libvlc录像功能的实现(提供32位和64位库)
  8. 使用Tensorflow2和Pytorch实现线性回归
  9. P1967 货车运输( 最大生成树+LCA or Kruskal重构树)
  10. 『Photo Shop实用技巧』之 去除红眼