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:
instalar openssl de brew
$ brew install openssl
copie
libssl.1.0.0.dylib
ylibcrypto.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/
en el directorio
/usr/lib
, cree un enlacelibssl.dylib
ylibcrypto.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