我正在尝试使用IronPython在.net应用程序中运行一个简单的python脚本。我已将nuget软件包安装到项目中(尚未在计算机上安装ironpython cli),并编写了此代码来处理设置路径,读取输出和设置输入。
this.engine = Python.CreateEngine();
this.scope = this.engine.CreateScope();
this.streamOut = new MemoryStream();
this.streamErr = new MemoryStream();
this.engine.Runtime.IO.SetOutput(this.streamOut, Encoding.Default);
this.engine.Runtime.IO.SetErrorOutput(this.streamErr, Encoding.Default);
// this is a locally set environment variable
string pythonRootPath = Environment.GetEnvironmentVariable("PythonPath");
ICollection<string> searchPaths = engine.GetSearchPaths();
searchPaths.Add($@"{pythonRootPath}\Lib\site-packages\");
searchPaths.Add($@"{pythonRootPath}\Lib");
engine.SetSearchPaths(searchPaths);
this.engine.Execute(@"import jinja2");
执行脚本会导致以下异常
IronPython.Runtime.Exceptions.ImportException: 'No module named errno'
我的C#项目引用了以下相关(至IronPython)程序集:
我的路径似乎已经为我的目的设置了足够的路径,因为不是jinja2本身的导入会导致错误,并且我能够导入一些标准库模块。但是,我已经看到os
软件包由于与jinja2相同的原因而无法导入。我也无法按预期直接导入errno,但是如果通过python 2.7 cli运行它,则可以直接导入errno,从而安装了该软件包。
如果有人有任何建议,我在这里很没意思。