1 votes

Conflit avec libpng.16.16.dylib

Sur mon mac book (OS X 10.12.4), j'ai deux fichiers suivants libpng.16.16.dylib : un dans /opt/X11/bin pour lequel otool rapports

/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)

et un autre dans Users/me/anaconda/lib avec l'installation Python d'anaconda, pour laquelle otool rapports

/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)

Dans mon script de démarrage, j'ai mis DYLD_LIBRARY_PATH d'inclure /opt/X11/lib .

Maintenant, quand je veux import matplotlib de ipython3 (de la distribution anaconda), j'obtiens une erreur

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

Il semble donc que dlopen essaie /opt/X11/lib/libpng.16.16.dylib plutôt que celle sous anaconda .

Existe-t-il un moyen d'éviter cela sans changer DYLD_LIBRARY_PATH ? Je ne me souviens pas pourquoi j'ai mis DYLD_LIBRARY_PATH comme ça, mais quel serait l'effet d'omettre /opt/X11/lib d'elle ?

1voto

thuyein Points 202

Je peux penser à quelques moyens.

  • Sauvegardez votre /opt/X11/lib/libpng.16.16.dylib . Et remplacez le fichier par un lien symbolique vers le fichier sous anaconda ou collez directement le fichier.
  • Je pense que les variables d'environnement peuvent avoir plusieurs chemins, comme la variable $PATH. J'ai découvert que le chemin que vous avez devant vous a la priorité sur ceux qui sont écrits derrière lui. Par exemple, si votre chemin est /usr1/:/usr2/ alors il devrait vérifier le usr1 et voir si le fichier requis existe, avant de passer au second. Ainsi, vous pourriez éventuellement mettre le chemin d'accès à anaconda devant la balise /opt/X11/lib/libpng.16.16.dylib .
  • Je pense qu'établir un lien symbolique avec le fichier est la meilleure solution. J'ai déjà connu ce genre de choses, j'ai juste eu à ajouter un lien symbolique et c'est réparé.

Ce site La réponse pourrait expliquer votre dernière question.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X