Matplotlib в Windows-зависимость не решена

у меня были проблемы с использованием matplotlib после обновления Windows. Я запускаю Windows 7 Service Pack 1 32 бит, и я установил Python и matplotlib как часть Python(x,y)-2.7.6.1. Проблема связана с FreeType, так как импорт не выполняется на ft2font, как показано в трассировке стека ниже:

In [1]: import matplotlib

In [2]: matplotlib.use('agg')

In [3]: import matplotlib.pyplot as plt
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-3-eff513f636fd> in <module>()
----> 1 import matplotlib.pyplot as plt

C:Python27libsite-packagesmatplotlibpyplot.py in <module>()
     22
     23 import matplotlib
---> 24 import matplotlib.colorbar
     25 from matplotlib import _pylab_helpers, interactive
     26 from matplotlib.cbook import dedent, silent_list, is_string_like, is_numlike

C:Python27libsite-packagesmatplotlibcolorbar.py in <module>()
     27 import matplotlib.artist as martist
     28 import matplotlib.cbook as cbook
---> 29 import matplotlib.collections as collections
     30 import matplotlib.colors as colors
     31 import matplotlib.contour as contour

C:Python27libsite-packagesmatplotlibcollections.py in <module>()
     21 import matplotlib.artist as artist
     22 from matplotlib.artist import allow_rasterization
---> 23 import matplotlib.backend_bases as backend_bases
     24 import matplotlib.path as mpath
     25 from matplotlib import _path

C:Python27libsite-packagesmatplotlibbackend_bases.py in <module>()
     48
     49 import matplotlib.tight_bbox as tight_bbox
---> 50 import matplotlib.textpath as textpath
     51 from matplotlib.path import Path
     52 from matplotlib.cbook import mplDeprecation

C:Python27libsite-packagesmatplotlibtextpath.py in <module>()
      9 from matplotlib.path import Path
     10 from matplotlib import rcParams
---> 11 import matplotlib.font_manager as font_manager
     12 from matplotlib.ft2font import FT2Font, KERNING_DEFAULT, LOAD_NO_HINTING
     13 from matplotlib.ft2font import LOAD_TARGET_LIGHT

C:Python27libsite-packagesmatplotlibfont_manager.py in <module>()
     51 import matplotlib
     52 from matplotlib import afm
---> 53 from matplotlib import ft2font
     54 from matplotlib import rcParams, get_cachedir
     55 from matplotlib.cbook import is_string_like

ImportError: DLL load failed: The specified procedure could not be found.

Я попытался переустановить Python (x,y), но это не решило проблему.

из других ответов на Stackoverflow я узнал, что общие неудачи здесь включить отсутствует msvcr90.dll и msvcp90.dll файлы. Я загрузил Dependency Walker и открыл c:Python27Libsite-packagesmatplotlibFT2FONT.PYD. Это показало проблемы с этими файлами и с libbz2.dll. Я загрузил и скопировал эти файлы в c:windowssystem32.

Я также попытался проверить мой PATH и PYTHONPATH переменные среды, но они, похоже, ссылаются на мою установку Python правильно:

PATH: C:Python27Libsite-packagesPyQt4;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program FilesNovellGroupWise;C:Program FilesMiKTeX 2.9miktexbin;C:Program FilesMicrosoft SQL ServerToolsBinn;C:Program FilesMicrosoft SQL Server0ToolsBinn;C:Program FilesCommon FilesAspenTech Shared;C:Python27;C:Python27DLLs;C:Python27Scripts;C:Python27gnuplotbinary;C:Program FilespythonxySciTE-3.3.2-3;C:Program Filespythonxyconsole;C:MinGW32-xybin;C:Python27Libsite-packagesvtk
PYTHONPATH: c:Python27DLLs

проблема проявляется даже при использовании только бэкэнда Agg, как показано в сеансе выше, поэтому я не думаю, что он имеет все, что связано с Qt или tk.

1 ответов


похоже, что проблема была вызвана приложением, устанавливающим другую / несовместимую версию BZ2 в C:\Windows\System32\libbz2.dll. Это использовалось вместо dll с тем же именем в каталоге Python27,установленном Python(x, y). Вот как ситуация проявилась в Dependency Walker:

Dependency Walker showing broken libbz2

вы можете видеть, что что-то не так с libbz2.dll даже если Dependency Walker не перечисляет его как ошибку зависимости как таковую. Переименование или удаление версия C:\Windows\System32\ вызвал зависимость, которая будет разрешена версией в c:\Python27\DLLs.