c#中调用python脚本

1.安装InronPython:http://ironpython.net/
2.添加引用库
在Visual Studio新建一个工程后,添加引用IronPython.dll和Microsoft.Scripting.dll(位于InronPython的安装目录下,如下图)
在这里插入图片描述
在C#中加入引用
在这里插入图片描述
在python中写脚本(写完脚本一定要在python下执行看有无语法,对齐等问题)

在c#中加入代码
在这里插入图片描述

运行结果
在这里插入图片描述
注意事项
import后的模块必需严格按名称定义
在这里插入图片描述
这里有个巨大的坑,在此折腾了几天,尝试百度上的各种解决方案,增加路径等均没效果,几近放弃,但10年的自考经历磨练了我,相信只要坚持下去,一定可以解决,一个个比较不同加上各种尝试,最终发现不同点,在python 3.x中,该模块位于C:\Users\User\AppData\Local\Programs\Python\Python36-32\Lib,并名为configparser,而在IronPython 2.7中,该模块位于C:\Program Files (x86)\IronPython 2.7\Lib下,名为ConfigParser,二者大小写不同,通常编写脚本后会在python下调试,import configparser没有问题,但当在c#下调用时,就会报以下错误,百度中关于该错误的很多,大多都是说要将python的环境变量加入,但我将python中的sys.path打印出,然后加入到C#或是脚本中,均无效,因为该模块在IronPython 2.7与python 3.x中的名字有分大小写
在这里插入图片描述

在这里插入图片描述
很多问题,想放弃时,说服自己再坚持坚持,也许下一次就能解决,自考十年,最多一科补考5次,屡次失败,屡次重来,深深体会坚持下来的重要,放弃只需要一秒钟,坚持的过程虽然痛苦,但也许成功就在下一次

python 脚本
import sys
sys.path.append(“C:\Program Files (x86)\IronPython 2.7\Lib\site-packages\rsa-3.1.1-py2.7.egg”)//Ironpython调用需要加入.egg格式文件,可以下载源码,然后使用python setup.py install来安装生成,做过很多尝试,引入python lib路径是无效的,必需引入第三方库的*.egg文件才可以
sys.path.append(“C:\Python27”)
sys.path.append(“C:\Python27\Lib”)
sys.path.append(“C:\Python27\Lib\site-packages”)
print(sys.path)
import time
import datetime
import rsa

c#代码
using IronPython.Hosting;//ironpython 2.78以下版本可引入
using Microsoft.Scripting.Hosting;
#经过对比,ironpython 2.74及以下版本,加入第三方*.egg库也会报各种错,VS2010需配2.77版本的ironpython,如果用2.78、2.79版本,在引入IronPython.dll时也会引入不成功(应该是需要配置更高版本的Vstudio)
ScriptRuntime pyRuntime = null;
dynamic obj = null;
var options = new Dictionary<string, object>();
options[“Frames”] = true;
options[“FullFrames”] = true;
ScriptEngine Engine = Python.CreateEngine(options);
var pyScope = Engine.CreateScope();
try
{
obj = Engine.ExecuteFile(@".\Script\SQL1.py", pyScope);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
var getcwd = obj.GetVariable<Func>(“test”);
var text = getcwd().ToString();
MessageBox.Show(text);

发布了23 篇原创文章 · 获赞 3 · 访问量 6337

猜你喜欢

转载自blog.csdn.net/qq_42920868/article/details/85329755