update pg_config not must installed instalar found como python virtualenv psycopg2

python - pg_config - Error de instalación de psycopg2-Biblioteca no cargada: libssl.dylib



psycopg2 python 3 (5)

¿El error dice que la versión de libssl.dylib es demasiado antigua?

En mi mac, el error es que libssl.dylib y libcrypto.dylib son demasiado viejos para que pyscopg los usen. El paquete openssl utilizado por mac es 0.98, mientras que pyscopg necesita 1.0.0 o una versión posterior.

Mi solución es esta:

  1. instalar openssl de brew

    $ brew install openssl

  2. copie libssl.1.0.0.dylib y libcrypto.1.0.0.dylib de /usr/local/Cellar/openssl/1.0.1c a /usr/lib/

    $ cd /usr/local/Cellar/openssl/1.0.1c/lib $ sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/lib/

  3. en el directorio /usr/lib , cree un enlace libssl.dylib y libcrypto.dylib . Es posible que deba eliminar los enlaces existentes.

    $ sudo rm libssl.dylib libcrypto.dylib $ sudo ln -s libssl.1.0.0.dylib libssl.dylib $ sudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib

Intento instalar psycopg2 en un virtualenv usando pip , la compilación se ve bien, dice "Instalado con éxito psycopg2", pero cuando intento importarlo en el intérprete de python (en virtualenv), indica un error:

File "<stdin>", line 1, in <module> File "/Users/me/sites/env/trackmap/lib/python2.7/site-packages/psycopg2/__init__.py", line 67, in <module> from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID ImportError: dlopen(/Users/me/sites/env/trackmap/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: libssl.dylib Referenced from: /Users/me/sites/env/trackmap/lib/python2.7/site-packages/psycopg2/_psycopg.so Reason: Incompatible library version: _psycopg.so requires version 1.0.0 or later, but libssl.0.9.8.dylib provides version 0.9.8

Lo que pasa es que lo instalo con éxito usando pip en mi otro entorno virtual antes, como hace varias semanas, y lo postgresql funcionar con el postgresql en mi mac. Me pregunto si esto es un problema de compilador. Vi algunas advertencias como shortens from 64-bit to 32-bit durante la instalación de psycopg2. Mi compilador es i686-apple-darwin11-llvm-gcc-4.2 , por defecto uno en mac os x lion.

Veo varias publicaciones relacionadas con la instalación de psycopg2 pero la mayoría de ellas se resuelven instalándolas en un entorno virtual. Entonces ... ¿alguien podría darme una sugerencia? ¡Gracias! Muy apreciado.

ps Si necesita el registro de compilación de la instalación de psycopg2, por favor avíseme, no lo pegué aquí porque es demasiado largo.


En OSX 10.11+ (El Capitan o posterior) solución con sustitución de enlaces simbólicos (ver arriba - https://.com/a/11911870/565525 ) sudo rm libssl.dylib libcrypto.dylib informes Operation not permitted . La solución que funcionó para mí fue:

brew install openssl

Encuentre dónde se encuentran las bibliotecas de preparación de openssl, comience la búsqueda desde el directorio /usr/local/Cellar/openssl . En mi caso, está en /usr/local/Cellar/openssl/1.0.2d_1/lib

Finalmente configure DYLD_LIBRARY_PATH, es decir, agregue una línea como esta en .bash_profile:

# replace location of lib files with folder name you found in previous step export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/Cellar/openssl/1.0.2d_1/lib

reinicie el shell, o solo el source ~/.bash_profile y pruebe si funciona:

$ python -c"import psycopg2 ; print(''psycopg2 is now ok'')"


Gracias @khrf por tu respuesta.

Si está utilizando el instalador del sistema postgres (en lugar de Postgres.app), use:

export DYLD_LIBRARY_PATH=/Library/PostgreSQL/9.3/lib

que puede colocarse en su ~/.bash_profile si desea evitar escribirlo todo el tiempo.


Si está utilizando PostgresApp, establezca la variable de entorno DYLD_LIBRARY_PATH de forma correspondiente, por ejemplo:

DYLD_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib/ ../venv/bin/python manage.py syncdb


Tuve un problema similar. Había usado Anaconda para instalar Python y una serie de paquetes y luego usé pip para instalar psycopg2. Pude solucionar el error desinstalando psycopg2 y reinstalándolo con el administrador de paquetes conda en lugar de pip.

pip uninstall psycopg2 conda install psycopg2