码迷,mamicode.com
首页 > 编程语言 > 详细

C#Note13:如何在C#中调用python

时间:2017-07-30 23:42:51      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:framework   开发者   message   搜索   mono   结果   前言   脚本   cal   

 前言

IronPython 是一种在 .NET 及 Mono上的 Python 实现,由微软的 Jim Hugunin(同时也是 Jython 创造者) 所发起,是一个开源的项目,基于微软的 DLR 引擎。在 2007 年,开发者决定改写构架,使用动态类型系统以让更多脚本语言能很容易地移植到NET Framework上。IronPython 的官方并未实现 Python 通用类库,仅实现了部分核心类,社区的开源类库实现有:

fepy(http://fepy.sourceforge.net/):fepy 为 IronPython 提供 Python 的大多数通用类库的实现。

 

Test For IronPython

(1)在VS2017中新建窗体项目:IronPythonTest.

(2)VS菜单栏工具中打开“Nuget程序包管理器”:

技术分享

(3)搜索IronPython程序包并安装:

技术分享

 (4)安装成功后,在exe程序所在文件夹下(也可以在其他目录下,通过指定相对路径),创建Python脚本:

示例(实现求两个数的四则运算)

num1=arg1  
num2=arg2  
op=arg3  
if op==1:  
    result=num1+num2  
elif op==2:  
    result=num1-num2  
elif op==3:  
    result=num1*num2  
else:  
    result=num1*1.0/num2  

(5)修改工程的配置文件App.config:

 技术分享

(6)计算按钮的点击事件:

private void btnCalculate_Click(object sender, EventArgs e)
        {
            ScriptRuntime scriptRuntime = ScriptRuntime.CreateFromConfiguration();
            ScriptEngine rbEng = scriptRuntime.GetEngine("python");
            ScriptSource source = rbEng.CreateScriptSourceFromFile("hello.py");//设置脚本文件  
            ScriptScope scope = rbEng.CreateScope();

            try
            {
                //设置参数  
                scope.SetVariable("arg1", Convert.ToInt32(txtNum1.Text));
                scope.SetVariable("arg2", Convert.ToInt32(txtNum2.Text));
                scope.SetVariable("arg3", operation.SelectedIndex + 1);
            }
            catch (Exception)
            {
                MessageBox.Show("输入有误。");
            }

            source.Execute(scope);
            labelResult.Text = scope.GetVariable("result").ToString();
        }

(7)运行结果:  

 

 

可参考相关文章:

使用IronPython集成Python和.NET

跨语言和跨编译器的那些坑(CPython vs IronPython)

C#Note13:如何在C#中调用python

标签:framework   开发者   message   搜索   mono   结果   前言   脚本   cal   

原文地址:http://www.cnblogs.com/carsonzhu/p/7260699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!