C#利用IronPython调用python脚本(含第三方模块) |
您所在的位置:网站首页 › 调用第三方软件的模块有哪些 › C#利用IronPython调用python脚本(含第三方模块) |
文章目录
一、C#调用简单python文件二、C#调用含第三方库python文件1、环境path写在C#文件中(未解决)2、环境path写入python文件(已解决)
参考文章:c#调用python脚本 最近项目中遇到使用C#调用Python的项目,其中涉及batchcompute库。遇到一些问题,记录一下。 项目使用的是IronPython 2.7.9版本包,需要在Nuget安装IronPython,如果报错,需要更新Nuget版本则下载对应版本即可:https://dist.nuget.org/index.html添加引用:IronPython.dll,Microsoft.Scripting.dll(在IronPython的安装目录中) 一、C#调用简单python文件文件名未hello.py的python文件内部代码: #文件目录 /Module/python/hello.py import time def welcome(name): return "hello " + name def Add(a, b): return a + bC#文件相关代码: … if (true) { Microsoft.Scripting.Hosting.ScriptRuntime pyRunTime = IronPython.Hosting.Python.CreateRuntime(); dynamic obj = pyRunTime.UseFile("Module/python/hello.py"); Console.WriteLine(obj.welcome("宝宝")); Console.WriteLine(obj.Add(5, 7)); //方法名必须大小写区分正确 Console.ReadKey(); } …执行结果为: 文件名未hello.py的python文件内部代码修改为: import time import batchcompute from batchcompute import CN_ZHANGJIAKOU as REGION from batchcompute import Client, ClientError def welcome(name): return "hello " + name def Add(a, b): return a + bC#文件相关代码: if (true) { var options = new Dictionary(); options["Frames"] = true; options["FullFrames"] = true; var engine = IronPython.Hosting.Python.CreateEngine(options); var scope = engine.CreateScope(); var paths = engine.GetSearchPaths(); paths.Add(@"C:\Users\Administrator\AppData\Local\Programs\Python\Python38\Lib\site-packages\batchcompute-2.1.4-py3.8.egg"); paths.Add(@"C:\Users\Administrator\AppData\Local\Programs\Python\Python38\Lib\site-packages"); paths.Add(@"C:\Users\Administrator\AppData\Local\Programs\Python\Python38\Lib"); paths.Add(@"C:\Users\Administrator\AppData\Local\Programs\Python\Python38"); engine.SetSearchPaths(paths); var source = engine.CreateScriptSourceFromFile("Module/python/hello.py"); //ListClusterInstances.py source.Execute(scope); var welcome = scope.GetVariable("welcome"); var result1 = welcome("宝宝"); Console.WriteLine(result1); var Add = scope.GetVariable("Add"); var result2 = Add(5, 7).ToString(); Console.WriteLine(result2); }执行结果报出的错误始终是不知缘由,结果如下: 由参考文档看出 paths 添加的环境路径应放置在python文件中,而不是写在C#代码中。 意味着python代码如下: import time import sys sys.path.append('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python38\\Lib\\') sys.path.append('C:C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python38\\Lib\\site-packages\\setuptools-12.0.3-py2.7.egg') sys.path.append('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python38\\Lib\\site-packages\\batchcompute-2.1.4-py3.8.egg') import batchcompute from batchcompute import CN_ZHANGJIAKOU as REGION from batchcompute import Client, ClientError def welcome(name): return "hello " + name def Add(a, b): return a + b参考文章: C#调用Python脚本并使用Python的第三方模块 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |