在C#中执行python脚本
我试图在C#中执行python代码。 通常应该使用IronPython并在安装PTVS之后完成(我使用的是VS 2010)。
var pyEngine = Python.CreateEngine(); var pyScope = pyEngine.CreateScope(); try { pyEngine.ExecuteFile("plot.py", pyScope); } catch (Exception ex) { Console.WriteLine("There is a problem in your Python code: " + ex.Message); }
问题是IronPython似乎无法识别像numpy,pylab或matplotlib这样的库。 我看了一下,发现有人在谈论Enthought Canopy或Anaconda,我已经安装了两个而没有解决问题。 我该怎么做才能解决问题?
为了执行导入一些库(如numpy和pylab)的Python脚本,可以这样做:
string arg = string.Format(@"C:UsersayedDesktopIronPythonExamplesRunExternalScriptplot.py"); // Path to the Python code Process p = new Process(); p.StartInfo = new ProcessStartInfo(@"D:WinPythonWinPython-64bit-2.7.5.3python-2.7.5.amd64python.exe", arg); p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; // Hide the command line window p.StartInfo.RedirectStandardOutput = false; p.StartInfo.RedirectStandardError = false; Process processChild = Process.Start(p.StartInfo);
如果您执行代码,IronPython将只查找当前工作目录中的脚本。 您需要添加更多搜索路径。 这是我使用ironpython的应用程序中的一些旧集成代码的一部分:
var runtimeSetup = Python.CreateRuntimeSetup(null); runtimeSetup.DebugMode = false; runtimeSetup.Options["Frames"] = true; runtimeSetup.Options["FullFrames"] = true; var runtime = new ScriptRuntime(runtimeSetup); var scriptEngine = runtime.GetEngineByTypeName(typeof(PythonContext).AssemblyQualifiedName); // Set default search paths ICollection searchPaths = scriptEngine.GetSearchPaths(); searchPaths.Add("\Scripts\Python"); scriptEngine.SetSearchPaths(searchPaths);
诀窍是在此代码行中添加所有路径: scriptEngine.SetSearchPaths(searchPaths);
。 如果你在这里添加包含plot.py
的目录, plot.py
一切都应该可行。
希望这可以帮助。
上述就是C#学习教程:在C#中执行python脚本分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1031721.html