2016-04-13 5 views
1

Я пытаюсь внедрить Python в C# -приложение, но я не могу заставить его работать. Мой кодОшибка PythonEngine.Initialize() без сообщения об ошибке

using System; 
using Python.Runtime; 

namespace NLP.Python 
{ 
    public class PythonRumtime 
    { 
     public PythonRuntime() 
    { 
     //Location of python installation 
     PythonEngine.PythonHome = "C:\\Python27"; 
     PythonEngine.Initialize(); 
    } 
    } 
} 

Когда я пытаюсь создать экземпляр этого класса, код не без ошибок при вызове PythonEngine.Initialize() Я уже добавил ссылку на DLL-файл Python.Runtime который был установлен с pythonnet.

Я понятия не имею, что еще делать.

Я установил pythonnet-2.1.0 через pip на 64-разрядной машине Windows с 32-разрядной установкой Python 2.7.11.

EDIT Похоже, что ошибка возникает при вызове Py_Initialize() в Python.Runtime.dll. Согласно https://docs.python.org/2/c-api/init.html «Нет возвращаемого значения, это фатальная ошибка, если сбой инициализации».

+1

Не уверен, что это проблема, но вам нужно либо изменить строку 'PythonHome' на @" C: \ Python27 ", либо" C: \\ Python27 ". Вам нужно избегать '\\'. – pstrjds

+1

@pstrjds Извините, это была ошибка форматирования при вставке моего кода. Я отредактировал мой вопрос – SonOfX

+2

Если ошибок нет, то как вы знаете, что это не удается? –

ответ

0

Это ошибка в Python.org официального инсталлятора окна для питона 2.7.11 32-бит:

https://bugs.python.org/issue25824

Попробуйте Anaconda, может быть WinPython или питон 2.7.10.

+1

Это, в сочетании с удалением строки 'PythonEngine.PythonHome =" C: \\ Python27 ";' сделал трюк. Благодаря! – SonOfX

+0

есть проблема с настройкой pythonhome или pythonpath: https://github.com/pythonnet/pythonnet/pull/186 – denfromufa

Смежные вопросы