Я пытаюсь встроить python 2.6 в .NET 4.0.
Следуя очень минимальной документации в «Python для .NET», я написал довольно простой код следующего содержания:
const string pythonModulePath = @"C:\Projects\PythonImport\PythonImport\test.py";
Environment.SetEnvironmentVariable("PYTHONHOME", Path.GetDirectoryName(python
ModulePath));
PythonEngine.Initialize();
var oldWorkingDirectory = Directory.GetCurrentDirectory();
var currWorkingDirectory = Path.GetDirectoryName(pythonModulePath);
Directory.SetCurrentDirectory(currWorkingDirectory);
var pyPlugin = PythonEngine.ImportModule(Path.GetFileNameWithoutExtension(python
ModulePath));
if (pyPlugin == null)
{
throw new PythonException();
}
Directory.SetCurrentDirectory(oldWorkingDirectory);
Даже если test.py пуст, я получаю сообщение об ошибке импорта: «Нет модуля с именем warnings».
'import site' failed; use -v for traceback
Unhandled Exception: Python.Runtime.PythonException: ImportError : No module nam
ed warnings
Причина становится очевидной, когда вы запускаете test.py с помощью «python -v» (подробный режим). Обратите внимание, что python вызывает #cleanup [2] предупреждения.
Почему Python .NET не может разрешать предупреждения? Модуль находится в каталоге Lib.
Есть идеи?