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

2024-03-29 06:50:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用IronPython在.net应用程序中运行一个简单的python脚本。我已经在项目中安装了nuget包(我没有在我的机器上安装ironpythoncli),并编写了以下代码来处理设置路径、读取输出和设置输入。在

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");

执行脚本会导致以下异常

^{pr2}$

我的C项目引用了以下相关(与IronPython相关)程序集:

  • IronPython(v2.7.9)
  • 在IronPython.模块在
  • 在铁蟒.SQLite在
  • 在铁蟒.Wpf在
  • 在Microsoft.Dynamic在
  • 在Microsoft.脚本在
  • 在Microsoft.Scripting.Metadata在

对于我的目的来说,我的路径设置得足够好,因为不是jinja2本身的导入导致了错误,而且我能够导入一些标准的库模块。但是,我看到os包无法导入的原因与jinja2相同。我也不能像预期的那样直接导入errno,但是如果我通过python2.7cli运行errno,那么就可以直接导入它,这样就安装了包。在

如果有人有什么建议的话,我真是没办法了。在


Tags: 项目路径脚本jinja2newthisenginemicrosoft