在c#代码中使用Pyparsing
本文关键字:Pyparsing 代码 | 更新日期: 2023-09-27 18:17:18
我试图执行python脚本使用pyparsing在 c# 的帮助下IronPython。但是当我尝试运行脚本时,我得到了ImportException,那里有No module named pyparsing
。我试图添加一个路径到包含pyparsing的目录,但我仍然没有设法如何以正确的方式运行它。
下面是c# 代码:
string ExecutePythonScript(string path, string text)
{
ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
string dir = System.IO.Path.GetDirectoryName("pyparsing-1.5.7");
ICollection<string> paths = engine.GetSearchPaths();
if (!String.IsNullOrEmpty(dir))
{
paths.Add(dir);
}
else
{
paths.Add(Environment.CurrentDirectory);
}
engine.SetSearchPaths(paths);
scope.SetVariable("text", text);
engine.ExecuteFile(path, scope);
return scope.GetVariable("result");
}
当然在python脚本的开头,我导入了pyparsing。
多亏了我的朋友,我才找到了问题所在。
- 解压的pyparsing包必须放在c# app的Debug文件夹下的Lib文件夹中。(我想它也可以在另一个名称的文件夹,但这对我来说更快。) 多亏了这个页面,我也意识到我需要在c#应用程序中添加一些代码行。
所以现在是:
string ExecutePythonScript(string path, string text)
{
ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
ICollection<string> Paths = engine.GetSearchPaths();
Paths.Add(".");
Paths.Add("D:''DevTools''IronPython 2.7''Lib");
Paths.Add("D:''DevTools''IronPython 2.7''DLLs");
Paths.Add("D:''DevTools''IronPython 2.7");
Paths.Add("D:''DevTools''IronPython 2.7''lib''site-packages");
engine.SetSearchPaths(Paths);
scope.SetVariable("text", text);
engine.ExecuteFile(path, scope);
(...)
它至少没有创建异常