Сбой pythonnet при импорте numpy

Среда

  • Версия Pythonnet: 2.3.0
  • Версия Python: Python 3.5 (среда conda)
  • Операционная система: Windows 10 64bit
  • VS 2017

Я пытаюсь заставить python.net работать и запускать пример сценария на своем веб-сайте, но он дает сбой при импорте numpy (работает с другими элементами). Вот код:

static void Main(string[] args)
{
    using (Py.GIL())
    {
        dynamic np = Py.Import("numpy");
        Console.WriteLine(np.cos(np.pi * 2));
<snip>

Он вылетает при импорте numpy со следующей ошибкой:

Python.Runtime.PythonException: 'ImportError : Importing the multiarray numpy extension module failed. Most likely you are trying to import a failed build of numpy. If you're working with a numpy git repo, try git clean -xdf (removes all files not under version control). Otherwise reinstall numpy.

Я просмотрел справочные страницы и, в частности, выполнил инструкции по этим ссылкам:

Обратите внимание, что:

  • Мне пришлось вручную установить свои переменные PATH, PYTHONPATH и PYTHONHOME, а также вручную установить переменные PythonEngine.PythonHome и PythonEngine.PythonPath, чтобы заставить его работать.
  • импорт других библиотек работает
  • импорт numpy работает, если я делаю это из среды conda

Не устанавливайте pythonpath, если вы не знаете, что делаете

denfromufa 12.07.2018 17:46

Взгляните на эту проблему: github.com/pythonnet/pythonnet/issues/490

denfromufa 12.07.2018 17:47

Хорошо, спасибо @denfromufa. Как только я удалил изменения, внесенные в переменные PATH, PYTHONPATH и PYTHONHOME, проблема исчезла сама собой. В приведенных выше ссылках на проблемы pythonnet (463, 259 и 645) предлагается изменить переменные среды. Фактически, вам нужно изменить переменные PythonEngine.PythonHome и PythonEngine.PythonPath, а НЕ переменные среды.

William Rubens 12.07.2018 20:41

Всем, кто читает это, позвольте мне отметить, что в конечном итоге я использовал ProcExp, чтобы узнать все места, которых касался обычный питон, и поэтому мне нужно было добавить следующие три местоположения в `PythonEngine.PythonPath: c: \ conda_env \ lib c : \ conda_env \ lib \ site-packages и c: \ conda_env \ dlls

William Rubens 12.07.2018 21:12
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
899
0

Другие вопросы по теме