web-dev-qa-db-fra.com

Problèmes d'utilisation de psycopg2 sur Mac OS (Yosemite)

Actuellement, j'installe psycopg2 pour travailler dans Eclipse avec python.

Je trouve beaucoup de problèmes:

  1. Le premier problème Sudo pip3.4 install psycopg2 ne fonctionne pas et affiche le message suivant

Erreur: exécutable pg_config introuvable.

FIXE AVEC: export PATH=/Library/PostgreSQL/9.4/bin/:"$PATH”

  1. Lorsque j'importe psycopg2 dans mon projet, j'obteins:

ImportError: dlopen (/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so Library libssl.1.0.0.dylib Library libcrypto.1.0.0.dylib

FIXE AVEC: Sudo ln -s /Library/PostgreSQL/9.4/lib/libssl.1.0.0.dylib /usr/lib Sudo ln -s /Library/PostgreSQL/9.4/lib/libcrypto.1.0.0.dylib /usr/lib

  1. Maintenant j'obtiens:

ImportError: dlopen (/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so, 2): Symbole introuvable: _lo_lseek64 Référencé depuis:/Library/Frameworks/Python .framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so Attendu dans: /usr/lib/libpq.5.dylib dans /Library/Frameworks/Python.framework/Versions/3.4/lib /python3.4/site-packages/psycopg2/_psycopg.so

Pouvez-vous m'aider?

45
Benja Garrido

Vous devez remplacer la bibliothèque /usr/lib/libpq.5.dylib car sa version est trop ancienne.
Voici ma solution à ce problème:

$ Sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old  
$ Sudo ln -s /Library/PostgreSQL/9.4/lib/libpq.5.dylib /usr/lib
75
KungFuLucky7

Si vous utilisez PostgresApp, vous devez exécuter les deux commandes suivantes:

Sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old
Sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib
28
Samer

Voici un correctif qui a fonctionné pour moi sur El Capitan qui ne nécessite pas de redémarrage pour contourner la protection de l'intégrité du système (SIP) OS X El Capitan:

brew unlink postgresql && brew link postgresql
brew link --overwrite postgresql

H/T Farhan Ahmad

4
Dusk

J'utilise yosemite, postgres.app & Django. cela m'a permis de charger correctement psycopg2, mais la seule différence était que mon libpq.5.dylib le fichier est dans /Applications/Postgres.app/Contents/Versions/9.4/lib.

donc ma deuxième ligne était Sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib

4
ksmskm

Pour ceux d'entre vous sur El Capitan qui ne peuvent pas utiliser la réponse de @ KungFuLucky7 - j'ai utilisé ce qui suit pour résoudre le problème (ajustez les chemins pour qu'ils correspondent aux vôtres si nécessaire).

Sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.5/lib/libpq.5.dylib /usr/local/lib/python2.7/site-packages/psycopg2/_psycopg.so
2
Steve Forbes

Dans El Capitan, j'ai utilisé la même solution que @Forbze mais 2 commandes supplémentaires comme suit.

Sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.3/lib/libpq.5.dylib  /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
Sudo install_name_tool -change libssl.1.0.0.dylib /Library/PostgreSQL/9.3/lib/libssl.1.0.0.dylib  /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
Sudo install_name_tool -change libcrypto.1.0.0.dylib /Library/PostgreSQL/9.3/lib/libcrypto.1.0.0.dylib  /Library/Python/2.7/site-packages/psycopg2/_psycopg.so

Ça marche parfaitement!

1
Hung Dam

eh bien, je voudrais donner ma solution, le problème est lié à la version de c. Donc, je viens de taper:

CFLAGS='-std=c99' pip install psycopg2==2.6.1
0
carlos.rivera