我正在尝试在 IronPython 的帮助下执行在 C#中使用 pyparsing 的python脚本。但是当我尝试运行脚本时,我得到的是 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 。
答案 0 :(得分:1)
感谢我的朋友,我发现了什么问题。
所以现在是:
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);
(...)
它至少不会创建异常。