2016-06-07 2 views
0

Я получаю ImportError всякий раз, когда я пытаюсь импортировать pyplot из matplotlib. Matplotlib устанавливается через pip в виртуальной среде. Это ошибка, которую я получаю:ImportError libqhull.so.5 при импорте pyplot

>>> import matplotlib.pyplot 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/mikefrank/.virtualenvs/pv-hrt/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 36, in <module> 
from matplotlib.figure import Figure, figaspect 
    File "/home/mikefrank/.virtualenvs/pv-hrt/local/lib/python2.7/site-packages/matplotlib/figure.py", line 40, in <module> 
from matplotlib.axes import Axes, SubplotBase, subplot_class_factory 
    File "/home/mikefrank/.virtualenvs/pv-hrt/local/lib/python2.7/site-packages/matplotlib/axes/__init__.py", line 4, in <module> 
from ._subplots import * 
    File "/home/mikefrank/.virtualenvs/pv-hrt/local/lib/python2.7/site-packages/matplotlib/axes/_subplots.py", line 10, in <module> 
from matplotlib.axes._axes import Axes 
    File "/home/mikefrank/.virtualenvs/pv-hrt/local/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 38, in <module> 
import matplotlib.tri as mtri 
    File "/home/mikefrank/.virtualenvs/pv-hrt/local/lib/python2.7/site-packages/matplotlib/tri/__init__.py", line 9, in <module> 
from .triangulation import * 
    File "/home/mikefrank/.virtualenvs/pv-hrt/local/lib/python2.7/site-packages/matplotlib/tri/triangulation.py", line 7, in <module> 
import matplotlib._qhull as _qhull 
ImportError: libqhull.so.5: cannot open shared object file: No such file or directory 
+0

Вы уже пробовали переустановить matplotlib? – cel

+0

Да, я попробовал переустановить его через pip и apt-get. – amalik

+0

»» libqhull.so.5: Нет такого файла или каталога ««: Пожалуйста, установите «libqhull5», если он доступен. Qhull-2003.1 (.tar.gz) предоставляет 'libqhull.so.5' - –

ответ

3

Это может произойти после обновления системы. В моем конкретном случае я обновил Ubuntu 14.04 до 16.04. Matplotlib ссылается на конкретные версии \*.so, и они устарели. Я предполагаю, что это связано с тем, что разные версии не всегда (всегда) обратно совместимы. (Для меня, я пошел от libqhull.so.6 к libqhull.so.7 во время обновления операционной системы, и Matplotlib был связан с libqhull.so.6.)

Во-первых, вы, вероятно, можете убедиться, что libqhull существует в вашей системе, используя что-то вроде:

sudo apt install libqhull-dev 

или эквивалент для вашей системы. (шахта уже была установлена, так что ничего не изменилось.)

Поскольку в настоящее время, pip часто устанавливает колесо, которое уже скомпилированные, мы должны заставить pip сделать компиляцию, поэтому он связывает с новым so файла , я использовал:

py35 -m pip install --upgrade matplotlib --no-binary matplotlib --force 

вариантов:

  • --no-binary matplotlib говорит pip не использовать колесо для matplotlib (но он все еще может использовать колеса для зависимостей, таких как numpy).
  • --upgrade должно быть очевидно
  • --force, потому что мы, возможно, уже в последней версии matplotlib, а затем --upgrade не будет ничего делать.