Ответ 1
Ищите старые файлы заголовков, начинающиеся с "png" (png.h, pngconf.h, возможно, другие) и удаляйте их.
Я использовал это руководство для установки "научного стека" для Python (OSX 10.9.2, заварной Python 2.7.6, IPython 2.0, matplotlib 1.3.1, libpng 1.6.10). Все выглядело хорошо.
Однако попытка запустить простой сюжет в среде ноутбука IPython с --pylab=inline
дает мне эту ошибку:
/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/IPython/core/formatters.py:239: FormatterWarning: Exception in image/png formatter: Could not create write struct
FormatterWarning,
И в терминале говорится: libpng warning: Application built with libpng-1.5.17 but running with 1.6.10
У меня нет других libpng, установленных, насколько я могу судить. Я попытался удалить все файлы, начинающиеся с libpng
с /usr/local/
, и переустановить все, но безрезультатно. Выходной сигнал от построения matplotlib (pip install matplotlib
) содержит:
BUILDING MATPLOTLIB
matplotlib: yes [1.3.1]
python: yes [2.7.6 (default, Mar 16 2014, 15:04:47) [GCC
4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.38)]]
platform: yes [darwin]
REQUIRED DEPENDENCIES AND EXTENSIONS
numpy: yes [version 1.8.1]
dateutil: yes [using dateutil version 2.2]
tornado: yes [using tornado version 3.2]
pyparsing: yes [using pyparsing version 2.0.1]
pycxx: yes [Couldn't import. Using local copy.]
libagg: yes [pkg-config information for 'libagg' could not
be found. Using local copy.]
freetype: yes [version 17.2.11]
png: yes [version 1.6.10]
OPTIONAL SUBPACKAGES
sample_data: yes [installing]
toolkits: yes [installing]
tests: yes [using nose version 1.3.1]
OPTIONAL BACKEND EXTENSIONS
macosx: yes [installing, darwin]
qt4agg: yes [installing, Qt: 4.8.6, PyQt4: 4.10.4]
gtk3agg: no [Requires pygobject to be installed.]
gtk3cairo: no [Requires cairo to be installed.]
gtkagg: no [Requires pygtk]
tkagg: yes [installing, version 81008]
wxagg: no [requires wxPython]
gtk: no [Requires pygtk]
agg: yes [installing]
cairo: no [cairo not found]
windowing: no [Microsoft Windows only]
OPTIONAL LATEX DEPENDENCIES
dvipng: no
ghostscript: no
latex: no
pdftops: no
Итак, мне кажется, matplotlib должен быть скомпилирован против libpng 1.6.10? Может кто-нибудь помочь мне выяснить, что происходит?
Ищите старые файлы заголовков, начинающиеся с "png" (png.h, pngconf.h, возможно, другие) и удаляйте их.
Расширение ответа, предоставленного @glenn-randers-pehrson:
pip uninstall matplotlib
cd /opt/X11/include/libpng15
mv png.h _png.h
mv pngconf.h _pngconf.h
mv pnglibconf.h _pnglibconf.h
pip install matplotlib
(if needed remove the old directory or use the force option)
(now move the .h files back to their original locations)
В целях документации (следуя приведенным выше комментариям):
Удалить X11
launchctl unload /Library/LaunchAgents/org.macosforge.xquartz.startx.plist
sudo launchctl unload /Library/LaunchDaemons/org.macosforge.xquartz.privileged_startx.plist
sudo rm -rf /opt/X11* /Library/Launch*/org.macosforge.xquartz.* /Applications/Utilities/XQuartz.app /etc/*paths.d/*XQuartz
sudo pkgutil --forget org.macosforge.xquartz.pkg
Затем
если у вас установлен matplotlib/python, выполните следующие действия:
pip uninstall matplotlib
pip uninstall ipython
Затем
pip install matplotlib
pip install ipython
При необходимости XQuartz можно повторно установить из https://www.macupdate.com/app/mac/26593/xquartz.
[Примечание. Это повторно добавляет файлы /opt/X 11/include/libpng15/png.h и т.д., но впоследствии ipython работал нормально.]
Пока немного смешно иметь несколько копий libpng, эта проблема возникает из-за того, что путь для компилятора pip и python отличается. Вы также можете исправить эту проблему по пути, а затем перекомпилировать, но вышеупомянутые решения тоже работают.