Lorsque j'essaie d'exécuter la commande:
import psycopg2
Je reçois l'erreur:
ImportError: dlopen(/Users/gwulfs/anaconda/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: libssl.1.0.0.dylib
Referenced from: /Users/gwulfs/anaconda/lib/python2.7/site-packages/psycopg2/_psycopg.so
Reason: image not found
Jusqu'à présent, j'ai essayé brew install openssl
et ont référencé (sans succès):
erreur d'installation psycopg2 - Bibliothèque non chargée: libssl.dylib
http://joshuakehn.com/2013/10/13/Postgresapp-and-psycopg2-on-OS-X.html
Au lieu de jouer avec des liens symboliques dans les répertoires de la bibliothèque système, définissez le $DYLD_FALLBACK_LIBRARY_PATH
pour inclure les bibliothèques anaconda. par exemple:
export DYLD_FALLBACK_LIBRARY_PATH=$HOME/anaconda/lib/:$DYLD_FALLBACK_LIBRARY_PATH
EDIT: potentiellement dangereux, lisez d'abord les commentaires !
Voir une réponse beaucoup plus sûre ci-dessous: https://stackoverflow.com/a/30726895/308315
Je suis tombé sur ce problème exact environ une heure après l'avoir posté et juste résolu. J'utilise Mac OS X Yosemite, Python 2.7 et l'application Postgresql.
Il semble y avoir un lien symbolique qui ne fonctionne pas par défaut (ou je l'ai introduit lors du dépannage), pour le corriger, supprimez d'abord les liens incorrects:
$ Sudo rm /usr/lib/libssl.1.0.0.dylib
$ Sudo rm /usr/lib/libcrypto.1.0.0.dylib
Puis reconnectez-les avec (remplacez YOURUSERNAME par votre nom d'utilisateur Mac. J'ai trouvé utile d'utiliser tab pour terminer chaque étape, pour confirmer le répertoire):
$ Sudo ln -s /Users/YOURUSERNAME/anaconda/lib/libssl.1.0.0.dylib /usr/lib
$ Sudo ln -s /Users/YOURUSERNAME/anaconda/lib/libcrypto.1.0.0.dylib /usr/lib
Je pense que les autres solutions n'ont pas fonctionné pour vous car votre version est en anaconda.
Après m'être cogné la tête contre le mur pendant quelques heures, ces deux solutions sont garanties de fonctionner:
Option 1. Cela résout notre problème sans déconner avec les variables d'environnement. Exécutez ceci dans votre Shell:
brew install --upgrade openssl
brew unlink openssl && brew link openssl --force
Boom! Cela met à niveau les liens symboliques dans /usr/local
pour libssl
et libcrypto
. À présent import psycopg2
fonctionne comme un charme.
Option 2. Si, pour une raison quelconque, vous souhaitez conserver les liens symboliques actuels dans usr/local
, exécutez cette commande dans votre shell:
export DYLD_FALLBACK_LIBRARY_PATH=$HOME/anaconda/lib/:$DYLD_FALLBACK_LIBRARY_PATH
Assurez-vous simplement de remplacer $HOME/anaconda/lib
ci-dessus avec le chemin d'accès à la lib. Dans mon cas, c'était $HOME/miniconda2/envs/ALi/lib
.
Cela ne fonctionnera que pour la session Shell/bash dans laquelle vous vous trouvez actuellement. Pour rendre la modification persistante, ajoutez l'instruction export
à votre ~/.bash_profile
ou ~/.bashrc
fichier.
Réflexions: IMO # 1 est la bonne façon de résoudre ce problème, mais j'ai laissé # 2 au cas où certaines personnes préfèrent travailler avec des variables d'environnement plutôt que de fixer des liens symboliques (si, par exemple, ils ont un logiciel avec une dépendance sur les anciennes versions du fichier openssl).
Après que Homebrew ne m'ait pas permis de forcer le lien openssl
, ce qui a bien fonctionné:
pip install --global-option=build_ext \
--global-option="-I/usr/local/opt/openssl/include" \
--global-option="-L/usr/local/opt/openssl/lib" psycopg2
(cette installation a réussi un virtualenv
sur macOS)
conda install psycopg fonctionne pour moi. Il met à jour les packages suivants Les packages suivants seront MIS À JOUR:
conda: 3.19.1-py27_0 --> 4.0.5-py27_0
openssl: 1.0.2f-0 --> 1.0.2g-0
pip: 8.0.2-py27_0 --> 8.1.0-py27_0
setuptools: 19.6.2-py27_0 --> 20.2.2-py27_0
wheel: 0.26.0-py27_1 --> 0.29.0-py27_0
En ce qui concerne la réponse de XL ci-dessus, je ne voulais pas utiliser Anaconda quand j'utilise déjà pip, alors je lui ai juste donné le chemin vers les bibliothèques Postgres qui fonctionnaient pour moi (j'utilise PostgreSQL.app sur Mac OS 10.10) ...
export DYLD_FALLBACK_LIBRARY_PATH=/Library/PostgreSQL/9.5/lib:$DYLD_FALLBACK_LIBRARY_PATH
J'ai dû varier un peu la réponse de Scott Brennstuhl: 1. Supprimer les liens symboliques brisés:
$ Sudo rm /usr/lib/libssl.1.0.0.dylib
$ Sudo rm /usr/lib/libcrypto.1.0.0.dylib
$ Sudo rm /usr/lib/libpq.5.dylib
$ Sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libssl.1.0.0.dylib /usr/lib
$ Sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libcrypto.1.0.0.dylib /usr/lib
$ Sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib
Ma saveur de configuration était un peu différente de l'OP: j'utilise Postgres.app
sur Mac et je suis dans un virtualenv
; mais les symptômes étaient similaires.
Pour moi, cela s'est produit juste après la mise à jour de mon Postgres.app
de 9,3 à 9,5 sur mon local, et l'erreur montrait clairement le psycopg2
chemin pour libssl.1.0.0.dylib
pointait vers l'ancien emplacement du répertoire de données 9.3 (le image
référencé dans cette erreur?). Ajouter des choses étranges à mon ENV
ou supprimer des liens symboliques, je ne suis pas sûr que l'impact de ne me soit pas vraiment senti. Je l'ai résolu en désinstallant puis en réinstallant psycopg2
de la même manière que lorsque je travaillais - quelque chose qui ne me semble pas très dangereux du tout:
# In my virtualenv
pip uninstall psycopg2
pip install psycopg2
Alors j'étais tout bon!
Procédez comme suit pour résoudre la bibliothèque non chargée: erreur libssl.1.0.0.dylib si vous avez openssl dans le répertoire/usr/local/Cellar
Sudo cp /usr/local/Cellar/openssl/<<version>>/lib/libssl.1.0.0.dylib/usr/lib
Après avoir effectué l'étape 1, si la bibliothèque n'est toujours pas chargée: erreur libcrypto.1.0.0.dylib. Procédez comme suit
Sudo cp /usr/local/Cellar/openssl/<<version>>/lib/libcrypto.1.0.0.dylib/usr/lib
J'ai essayé pip install psycopg2 qui posait des problèmes similaires. Ensuite, j'ai essayé d'installer conda psycopg2, qui a fonctionné! Assurez-vous également que le pip que vous utilisez appartient à anaconda (quel pip)
J'avais ce problème sur Mac, essayer ln -s me donnait ln: /usr/lib/libssl.1.0.0.dylib: Opération non autorisée Je ne voulais pas jouer avec mon système. Au lieu de cela, ce qui a fonctionné pour moi, c'est d'installer simplement psycopg2-binary: pip install psycopg2-binary
Cette version installée psycopg2-binary-2.8.
J'utilise Mac OS Sierra: et j'ai eu cette erreur:
Library not loaded: libssl.1.1.dylib
J'ai trouvé cette bibliothèque dans
/Library/PostgreSQL/11/lib
J'ai trouvé cette solution sur internet:
export DYLD_LIBRARY_PATH=/Library/PostgreSQL/11/lib
Mais ce n'est pas une solution permanente. Comme je dois exécuter la commande ci-dessus chaque fois que je redémarre mon serveur.
Après avoir essayé pendant plus d'une journée, je suis arrivé à la solution ci-dessous.
De même, si vous rencontrez un problème pour Bibliothèque non chargée: libssl.1.0.0.dylib changez simplement la version de 1.0 à 1.1 de openssl et copiez libssl.1.1 à la place libssl.1.0 et libcrypto.1.1 à la place libcrypto .1.0.0
Terminé, vous êtes prêt à profiter de psycopg2 sur mac.