C#中调用python方法
最近因为项目设计,有部分使用Python脚本,因此代码中需要调用python方法。
1.首先,在c#中调用python必须安装IronPython,在 http://ironpython.codeplex.com/ 中下载
2.对应用程序添加IronPython.dll和Microsoft.Scripting.dll 的引用
3.调用python:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using IronPython.Hosting; using Microsoft.Scripting.Hosting;namespace WpfUsingPythonDemo {public class UsingPython{private ScriptRuntime pyRuntime = null;private dynamic obj = null;public UsingPython(){string serverpath = AppDomain.CurrentDomain.BaseDirectory + "frs_main.py";//所引用python路径pyRuntime = Python.CreateRuntime();ScriptEngine Engine = pyRuntime.GetEngine("python");ScriptScope pyScope = Engine.CreateScope(); //Python.ImportModule(Engine, "random");obj = Engine.ExecuteFile(serverpath, pyScope);}public bool ExcutePython(){try{if (null != obj){obj.frs_init();//调用frs_main.py中的方法 }else{return false;}return true;}catch(Exception ex){throw ex;}}} }
Using Python
4.c#中引用的python应该是IronPython,与CPython版本和模块中有差别,所以需要注意使用版本
5.因为所使用的python文件中引用了很多模块,所以运行时会找不到python库,在网上查了一下,需要引入搜索路径并且引入库,如下:
public UsingPython(){string serverpath = AppDomain.CurrentDomain.BaseDirectory + "frs_main.py";//所引用python路径pyRuntime = Python.CreateRuntime();ScriptEngine Engine = pyRuntime.GetEngine("python"); //手动设置搜索路径ICollection<string> Paths = Engine.GetSearchPaths();Paths.Add("//Lib");Paths.Add("//Lib//site-packages");Paths.Add(AppDomain.CurrentDomain.BaseDirectory + "frs");//importpy文件中的库,需要注意先后引用顺序Engine.ImportModule("sys");Engine.ImportModule("logging");Engine.ImportModule("Queue");Engine.ImportModule("ctypes");Engine.ImportModule("json");Engine.ImportModule("os");ScriptScope pyScope = Engine.CreateScope(); //Python.ImportModule(Engine, "random");obj = Engine.ExecuteFile(serverpath, pyScope);}
这是自己摸索找到的解决方案,希望以后可以有更好的方法。
转载于:https://www.cnblogs.com/xiamojinnian/p/5280526.html
C#中调用python方法相关推荐
- java执行python脚本_使用Runtime.getRuntime().exec()在java中调用python脚本
举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...
- c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法
c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法 时间:2017-05-09 12:32:06阅读:234评论 ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- java调用其他方法中的变量_Uipath中调用Python的方法
难度等级:初学者. 这篇文章将有助于在UiPath中使用Python活动(Activity),该活动允许从UiPath调用和执行Python脚本.不仅可以执行Python脚本,还可以将参数传递给Pyt ...
- python和uipath区别_Uipath中调用Python的方法
难度等级:初学者. 这篇文章将有助于在UiPath中使用Python活动(Activity),该活动允许从UiPath调用和执行Python脚本.不仅可以执行Python脚本,还可以将参数传递给Pyt ...
- Python在子类中调用父类方法
1.在子类中调用父类方法 super().方法名() 类名.方法名(self) spuer(要从哪一个类的上一级类开始查找, self).方法名() 子类调用父类方法时,一般都是想对父类方法进行扩展 ...
- java中调用python
在Java中调用Python </h1><div class="clear"></div><div class="postBod ...
- 在Java中调用Python
写在前面 参考:https://www.cnblogs.com/nuccch/p/8435693.html 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然 ...
- python能在excel运行吗-用ExcelPython在Excel中调用Python
Python部落组织翻译, 禁止转载 [介绍] ExclePython是一款轻量级的COM库,它支持你从Excel VBA中调用Python代码和运行Python 其他功能(确实任何语言都支持COM) ...
最新文章
- 处理机调度的性能准则
- jpa 查找最后一条数据_查找数据的最后1条记录,你用了2小时,同事1分钟就搞定了...
- time,atoi,strstr
- 第二届「星斗奖」获奖名单正式公布
- UTF-8 可变编码格式
- android自定义控件几种,Android 自定义View一个控件搞定多种水波纹涟漪扩散效果 - CSDN博客...
- cvc降噪和主动降噪_1MORE 主动降噪圈铁耳机图集
- git拉取项目以及提交项目
- (转)淘淘商城系列——实现添加商品功能
- 让AI捕捉“七情”,多模态情感分析的应用和挑战
- 大数据之路,阿里巴巴大数据实践
- RocketMQ ConsumeQueue 消费队列文件
- 如何将图片中的表格变成Excel?这几个操作很简单
- 华东师范 2018年 研究生复试上机题解合集
- DRM in Android
- 求助!win10这段时间在使用其间经常性的系统中断这个进程100%cpu的情况
- Matlab求时变微分方程组解,Matlab求常微分方程组的解析解
- PyCharm中安装库失败 ERROR: Could not find a version that satisfies the requirement (from version None)
- 《勋伯格和声学》读书笔记(六):关于获得较好和声的一些提示
- mysql季度查询_mysql按年度、季度、月度、周、日SQL统计查询
热门文章
- python编程入门p-读书笔记 - 《Python编程:从入门到实践》
- 从R-CNN到Mask R-CNN
- linux日志中有空格,linux中统计排序的内容含有空白行的解决办法
- 网络编程学习笔记(使用select函数的TCP和UDP回射服务器程序)
- GIS算法基础(四)平面坐标变换(变换矩阵算法实现)
- mac os 下 Android Studio设置真机调试
- springMVC,mybatis配置事务
- [LeetCode]Convert Sorted Array to Binary Search Tree
- 转 无依赖Office资源的导入导出
- 深圳湾口岸明起开通公交大巴