Я получаю `Нет модуля с именем _multiarray_umath` при использовании matplotlib - PullRequest
0 голосов
/ 11 января 2019

Когда я запускаю свои тесты в CI, я получаю следующую ошибку:

ImportError while importing test module '/home/tests/test_process.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
...
.tox/py27/lib/python2.7/site-packages/matplotlib/pyplot.py:31: in <module>
    import matplotlib.colorbar
.tox/py27/lib/python2.7/site-packages/matplotlib/colorbar.py:36: in <module>
    import matplotlib.contour as contour
.tox/py27/lib/python2.7/site-packages/matplotlib/contour.py:14: in <module>
    import matplotlib._contour as _contour
E   ImportError: numpy.core.multiarray failed to import
----- Captured stderr -----
ImportError: No module named _multiarray_umath

Что здесь происходит? Я не внес никаких изменений в свой код, но внезапно моя сборка начала давать сбой.

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Решение заключается в том, что вам нужно обновить NumPy. Если вы используете pip

pip install numpy --upgrade

Надеюсь, это поможет.

0 голосов
/ 11 января 2019

Решение

Установите numpy с помощью pip отдельно перед установкой вашего sdist.

Для tox, добавьте numpy прямо в массив deps.

Почему это произошло?

Недавно Numpy опубликовал numpy-1.16.0rc2 для pypy, что (в сочетании с ошибкой / недосмотром в easy_install) сломало вашу сборку:

pip не знает, как установить RC по умолчанию, а easy_install (который использует matplotlib для сборки). Если бы вы делали sdist с целой группой -vvvvvv s, вы бы увидели что-то вроде этого:

gcc ... -I/tmp/pip-install-Eh8d9d/matplotlib/.eggs/numpy-1.16.0rc2-py2.7-linux-x86_64.egg/numpy/core/include ... -o build/temp.linux-x86_64-2.7/src/_contour.o

В частности, обратите внимание, что matplotlib создается против numpy-1.16.0rc2-py2.7. Но тогда в другом месте вы можете увидеть что-то вроде

Successfully installed ... numpy-1.15.4 ...

Итак, когда вы попытаетесь запустить вашу программу, matplotlib попытается получить доступ к модулям, которых нет в numy-версии без RC, и потерпит неудачу.

Если у вас уже установлена ​​numpy, easy_install не будет пытаться извлечь свою версию и вместо этого будет использовать (правильную) существующую версию.

Смотри также

...