Ironpython 2.7.9 ImportException:在.NET应用程序中导入另一个模块时,“没有名为errno的模块”

时间:2018-11-18 01:36:41

标签: c# python .net jinja2 ironpython

我正在尝试使用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)程序集:

  • IronPython(v2.7.9)
  • IronPython.Modules
  • IronPython.SQLite
  • IronPython.Wpf
  • Microsoft.Dynamic
  • Microsoft.Scripting
  • Microsoft.Scripting.Metadata

我的路径似乎已经为我的目的设置了足够的路径,因为不是jinja2本身的导入会导致错误,并且我能够导入一些标准库模块。但是,我已经看到os软件包由于与jinja2相同的原因而无法导入。我也无法按预期直接导入errno,但是如果通过python 2.7 cli运行它,则可以直接导入errno,从而安装了该软件包。

如果有人有任何建议,我在这里很没意思。

0 个答案:

没有答案