76 votes

Image de Psycopg2 non trouvée

J'essaie de configurer postgres avec l'application postgres mac et je rencontre cette erreur, que je n'ai pas réussi à résoudre. Des idées ?

    ImportError: dlopen(/Users/Craig/pyenv/mysite/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: @executable_path/../lib/libssl.1.0.0.dylib
  Referenced from: /Applications/Postgres.app/Contents/MacOS/lib/libpq.dylib
  Reason: image not found

89voto

philippinedev Points 541
$ sudo ln -s /Library/PostgreSQL/9.2/lib/libssl.1.0.0.dylib /usr/lib
$ sudo ln -s /Library/PostgreSQL/9.2/lib/libcrypto.1.0.0.dylib /usr/lib

J'ai rencontré cette erreur en travaillant sur Django. Cela fonctionne sur virtualenv avec Django==1.3 mais pas sur Django==1.5 où je dois exécuter les commandes ci-dessus.

Dans OS X El Capitan vous ne pouvez pas faire ces liens sans désactiver la protection du système mais cela fonctionne bien si vous faites un lien vers /usr/local/lib

2 votes

Cette réponse est la seule qui ait fonctionné pour moi et qui n'ait pas perturbé d'autres systèmes comme Mercurial, etc. Il semble qu'il s'agisse d'un problème connu : github.com/PostgresApp/PostgresApp/issues/

12 votes

Et pour ceux d'entre vous qui utilisent Postgres.app de Heroku -- sudo ln -s /Applications/Postgres.app/Contents/MacOS/lib/libssl.1.0.0.d‌​ylib /usr/lib sudo ln -s /Applications/Postgres.app/Contents/MacOS/lib/libcrypto.1.0.‌​0.dylib /usr/lib

0 votes

Si vous avez déjà créé un lien symbolique à partir d'une version précédente, veillez à le supprimer avant d'en créer un nouveau. sudo rm /usr/lib/libssl.X.X.X.dylib sudo rm /usr/lib/libcrypto.X.X.X.dylib Puis ajoutez les nouveaux liens en suivant la réponse de philippinedev. (Soyez sûr d'avoir la bonne version des fichiers dans votre chemin bien sûr)

18voto

stephenalexbrowne Points 691

J'ai trouvé une solution qui a fonctionné pour moi en traitant un problème similaire sur rails. Ajoutez ce qui suit à votre .bash_profile, .bash_rc, ou équivalent :

export DYLD_FALLBACK_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib:$DYLD_LIBRARY_PATH

(En supposant que vous avez installé Postgres.app dans l'emplacement par défaut). Redémarrez ensuite votre session de terminal et réessayez.

L'exportation vers DYLD_LIBRARY_PATH directement peut causer de sérieux problèmes avec les autres applications qui en dépendent, mais l'utilisation du chemin de repli permet d'éviter ces problèmes.

Voir aussi : https://github.com/PostgresApp/PostgresApp/issues/109#issuecomment-18387546

EDIT : Il semble que la définition de DYLD_FALLBACK_LIBRARY_PATH provoque une erreur lorsque vous essayez d'exécuter psql. Pour résoudre ce problème, vous pouvez ajouter les deux lignes suivantes à votre fichier .bash_profile :

alias psql="(. ~/.bash_profile; unset DYLD_FALLBACK_LIBRARY_PATH; psql)";

Cela suppose que vous utilisez bash et que votre fichier .bash_profile se trouve dans votre répertoire personnel. Si ce n'est pas le cas (ou si vous utilisez un .bashrc ou une autre configuration d'environnement au lieu de .bash_profile), modifiez l'option ~/.bash_profile de la commande au chemin de votre configuration d'environnement script.

La commande aliasée démarre un sous-shell qui n'affecte pas votre environnement bash actuel. Ainsi, lorsqu'elle désactive la variable DYLD_FALLBACK_LIBRARY_PATH, ce n'est que temporaire. Après avoir quitté psql, la variable d'environnement sera à nouveau définie.

0 votes

Des ajustements mineurs pour un virtualenv ; j'ai ajouté cette ligne à mon postactivate : export "DYLD_FALLBACK_LIBRARY_PATH=/Library/PostgreSQL/9.4/lib:$DYL‌​D_LIBRARY_PATH" et lors de l'installation, vous avez utilisé cette commande : DYLD_LIBRARY_PATH=/Library/PostgreSQL/9.4/lib pip install psycopg2

11voto

Jay Deng Points 138

Ce problème m'a pris toute la matinée pour le résoudre. J'ai trouvé la discussion sur http://initd.org/psycopg/articles/2010/11/11/links-about-building-psycopg-mac-os-x/ vraiment utile. Grâce à la réponse de Jurie, la solution à mon problème (sous Mac) est la suivante :

  1. Installez openssl 1.0.0 en utilisant brew :

     brew install openssl
  2. en utilisant la commande suivante :

    export DYLD_LIBRARY_PATH=/usr/local/Cellar/openssl/**1.0.1x**/lib

    remplacer 1.0.1x avec votre version actuelle. Pour moi, c'est 1.0.1h.

J'espère que cela vous aidera !

EDIT : Après un jour, j'ai constaté que la deuxième commande doit être entrée à chaque fois que l'on a besoin de se connecter à la base de données, donc ce n'est pas une solution permanente à ce problème.

0 votes

La définition de la variable d'environnement DYLD_LIBRARY_PATH lors de l'exécution de la commande fonctionne également : DYLD_LIBRARY_PATH=/usr/local/Cellar/openssl/1.0.2d_1/lib/ python manage.py migrate

0 votes

Ajouter export DYLD_LIBRARY_PATH=/usr/local/Cellar/openssl/**1.0.1x**/lib dans votre environnement activer script (par exemple ~/anaconda3/envs/myenv/bin/activate)

1 votes

Vous pouvez également ajouter la commande dans ~/.bash_profile et cela fonctionnera à chaque fois sans avoir à le saisir encore et encore.

10voto

Brian Visel Points 473

Dans votre environnement bash, avant de le charger, essayez ceci :

export DYLD_LIBRARY_PATH=/Library/PostgreSQL/x.y/lib

en remplaçant le "x.y" par la version de votre système.

soyez conscient que cette configuration dans votre profil bash peut interférer avec d'autres programmes, comme l'a noté KindOfGuy.

bien sûr, si vous ne l'exécutez pas depuis une invite bash, vous devrez configurer votre environnement de la manière dont pyenv vous le permet. vous pouvez même éditer pyenv lui-même et le placer en tête de liste.

Une autre alternative est de mettre cela dans un script de python qui s'exécute avant de tenter d'importer psycopg2 :

import os
os.environ['DYLD_LIBRARY_PATH'] = '/Library/PostgreSQL/x.y/lib'

encore une fois, en remplaçant 'x.y' par la version présente sur votre système dans /Library/PostgreSQL.

0 votes

Rien... Bien que j'aie vérifié ce dossier /Library/PostgreSQL/9.2/ et le seul élément à l'intérieur était un dossier verrouillé appelé "données". J'imagine qu'il devrait y avoir d'autres éléments, non ?

2 votes

L'exécution de l'exportation à partir du profil bash a causé des problèmes ailleurs, mais j'ai coincé os.environ['DYLD_LIBRARY_PATH'] = '/Library/PostgreSQL/x.y/lib' dans manage.py, ce qui a fonctionné à merveille. J'aurai toujours besoin de faire cela dans tous les projets, mais cela m'aidera jusqu'à ce que le problème soit résolu d'une autre manière.

0 votes

Au nom de ctbailey : _Voici un chemin mis à jour pour la version 9.3 de Postgres.app : export DYLD_FALLBACK_LIBRARY_PATH=/Applications/Postgres.app/Conten‌​ts/Versions/9.3/lib:‌​$DYLD_LIBRARY_PATH_ .

2voto

agentargo Points 117

Il me manquait le paquet client postgresql, je les ai donc installés avec brew et cela a réglé le problème pour moi.

brew update
brew doctor
brew install postgresql

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X