Ironpython 2.7.9 ImportException: «модуль не указан с ошибкой» при импорте другого модуля в приложение .NET - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь запустить простой скрипт на Python в моем приложении .net, используя IronPython. Я установил пакет 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, чтобы пакет был установлен.

У меня очень много идей, если у кого-то есть какие-либо предложения.

...