最近因为项目设计,有部分使用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方法相关推荐

  1. java执行python脚本_使用Runtime.getRuntime().exec()在java中调用python脚本

    举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...

  2. c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法

    c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法 时间:2017-05-09 12:32:06阅读:234评论 ...

  3. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

  4. java调用其他方法中的变量_Uipath中调用Python的方法

    难度等级:初学者. 这篇文章将有助于在UiPath中使用Python活动(Activity),该活动允许从UiPath调用和执行Python脚本.不仅可以执行Python脚本,还可以将参数传递给Pyt ...

  5. python和uipath区别_Uipath中调用Python的方法

    难度等级:初学者. 这篇文章将有助于在UiPath中使用Python活动(Activity),该活动允许从UiPath调用和执行Python脚本.不仅可以执行Python脚本,还可以将参数传递给Pyt ...

  6. Python在子类中调用父类方法

    1.在子类中调用父类方法 super().方法名() 类名.方法名(self) spuer(要从哪一个类的上一级类开始查找, self).方法名() 子类调用父类方法时,一般都是想对父类方法进行扩展 ...

  7. java中调用python

    在Java中调用Python </h1><div class="clear"></div><div class="postBod ...

  8. 在Java中调用Python

    写在前面 参考:https://www.cnblogs.com/nuccch/p/8435693.html 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然 ...

  9. python能在excel运行吗-用ExcelPython在Excel中调用Python

    Python部落组织翻译, 禁止转载 [介绍] ExclePython是一款轻量级的COM库,它支持你从Excel VBA中调用Python代码和运行Python 其他功能(确实任何语言都支持COM) ...

最新文章

  1. 处理机调度的性能准则
  2. jpa 查找最后一条数据_查找数据的最后1条记录,你用了2小时,同事1分钟就搞定了...
  3. time,atoi,strstr
  4. 第二届「星斗奖」获奖名单正式公布
  5. UTF-8 可变编码格式
  6. android自定义控件几种,Android 自定义View一个控件搞定多种水波纹涟漪扩散效果 - CSDN博客...
  7. cvc降噪和主动降噪_1MORE 主动降噪圈铁耳机图集
  8. git拉取项目以及提交项目
  9. (转)淘淘商城系列——实现添加商品功能
  10. 让AI捕捉“七情”,多模态情感分析的应用和挑战
  11. 大数据之路,阿里巴巴大数据实践
  12. RocketMQ ConsumeQueue 消费队列文件
  13. 如何将图片中的表格变成Excel?这几个操作很简单
  14. 华东师范 2018年 研究生复试上机题解合集
  15. DRM in Android
  16. 求助!win10这段时间在使用其间经常性的系统中断这个进程100%cpu的情况
  17. Matlab求时变微分方程组解,Matlab求常微分方程组的解析解
  18. PyCharm中安装库失败 ERROR: Could not find a version that satisfies the requirement (from version None)
  19. 《勋伯格和声学》读书笔记(六):关于获得较好和声的一些提示
  20. mysql季度查询_mysql按年度、季度、月度、周、日SQL统计查询

热门文章

  1. python编程入门p-读书笔记 - 《Python编程:从入门到实践》
  2. 从R-CNN到Mask R-CNN
  3. linux日志中有空格,linux中统计排序的内容含有空白行的解决办法
  4. 网络编程学习笔记(使用select函数的TCP和UDP回射服务器程序)
  5. GIS算法基础(四)平面坐标变换(变换矩阵算法实现)
  6. mac os 下 Android Studio设置真机调试
  7. springMVC,mybatis配置事务
  8. [LeetCode]Convert Sorted Array to Binary Search Tree
  9. 转 无依赖Office资源的导入导出
  10. 深圳湾口岸明起开通公交大巴