У моїй mac-книзі (OS X 10.12.4) у мене є дві libpng.16.16.dylib
: одна в /opt/X11/bin
, для якої otool
звіти
/opt/X11/lib/libpng16.16.dylib:
/opt/X11/lib/libpng16.16.dylib (compatibility version 43.0.0, current version 43.0.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
та інший Users/me/anaconda/lib
з встановленням python анаконди, про який otool
повідомляє
/Users/me/anaconda/lib/libpng16.16.dylib:
@rpath/libpng16.16.dylib (compatibility version 44.0.0, current version 44.0.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
У своєму стартовому сценарії я налаштував DYLD_LIBRARY_PATH
включити /opt/X11/lib
.
Тепер, коли я хочу import matplotlib
від ipython3
(розподілів анаконди), я отримую повідомлення про помилку
ImportError: dlopen(/Users/walter1/anaconda/lib/python3.6/site-packages/matplotlib/_png.cpython-36m-darwin.so, 2): Library not loaded: @rpath/libpng16.16.dylib
Referenced from: /Users/walter1/anaconda/lib/python3.6/site-packages/matplotlib/_png.cpython-36m-darwin.so
Reason: Incompatible library version: _png.cpython-36m-darwin.so requires version 44.0.0 or later, but libpng16.16.dylib provides version 43.0.0
Тож виявляється, що dlopen
намагається /opt/X11/lib/libpng.16.16.dylib
скоріше, ніж той, хто під anaconda
.
Чи є спосіб уникнути цього без змін DYLD_LIBRARY_PATH
? Я не можу пригадати, чому я ставив DYLD_LIBRARY_PATH
це так, але який би ефект був від цього пропускати /opt/X11/lib
?