update mac python psycopg2 osx-elcapitan libssl

python - mac - ¿Cómo ejecuto psycopg2 en El Capitan sin golpear un error libssl?



python install psycopg2 binary (6)

¿Usas anaconda? Si es así, una solución muy simple que funcionó para mí fue instalar simplemente usando conda.

Específicamente, ingrese lo siguiente en la línea de comando:

conda instalar psycopg2

Tengo una configuración de desarrollo de Django en Python en mi mac y acabo de actualizar a El Capitán.

Tengo psycopg2 instalado en un virtualenv pero cuando ejecuto mi servidor me aparece el siguiente error:

django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: dlopen(/Users/aidan/Environments/supernova/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: libssl.1.0.0.dylib Referenced from: /Users/aidan/Environments/supernova/lib/python2.7/site-packages/psycopg2/_psycopg.so Reason: image not found

He intentado reinstalar mi virtualenv

pip install -f requirements.txt

Y he intentado actualizar psycopg2

pip uninstall psycopg2 pip install psycopg2

Pero sigo teniendo el mismo error.

También he intentado agregar enlaces simbólicos a /usr/lib pero la nueva cosa sin raíces de El Capitán no lo permite -

$ sudo ln -s /Library/PostgreSQL/9.2/lib/libssl.1.0.0.dylib /usr/lib ln: /usr/lib/libssl.1.0.0.dylib: Operation not permitted

Así que intenté /usr/local en vano.

La versión del sistema de openssl parece ser 1.0.2 -

$ openssl version OpenSSL 1.0.2d 9 Jul 2015

¿Cómo puedo solucionar esto?


Basándome en la solución @ArtHarg, utilicé esto con Python 3.4, PostgreSQL 9.5 y OS X el Capitán:

sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.5/lib/libpq.5.dylib /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so sudo install_name_tool -change libcrypto.1.0.0.dylib /Library/PostgreSQL/9.5/lib/libcrypto.1.0.0.dylib /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so sudo install_name_tool -change libssl.1.0.0.dylib /Library/PostgreSQL/9.5/lib/libssl.1.0.0.dylib /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so


Esto es un dolor para mí también, porque solía establecer

export DYLD_FALLBACK_LIBRARY_PATH=/Library/Postgresql/9.5/lib

en mi .bash_profile, y todo funcionó bien. Pero ahora esa variable de entorno es una de las que no se pueden pasar a nuevos shells. Significa que puedo importar psycopg2 fine en Python desde mi shell de inicio de sesión, pero mis scripts de prueba mueren.

Ahora establezco $ SIP_WORKAROUND_LIBRARY_PATH en el mismo valor, que OSX dejará solo, y luego tengo que hacer:

export DYLD_FALLBACK_LIBRARY_PATH=$SIP_WORKAROUND_LIBRARY_PATH

en mis scripts de prueba, para colar el valor a través. Está lejos de ser ideal, pero espero que ayude a alguien.


Estoy ejecutando El Capitan 10.11.5 y python 3.5.1 y he cometido el mismo error al intentar importar psycopg2 , ya sea en una consola simple o dentro de PyCharm. Logré arreglar esto al llegar a la raíz:

sudo su -

luego uniendo simbólicamente dos bibliotecas:

ln -s /Library/PostgreSQL/9.5/lib/libssl.1.0.0.dylib /usr/local/lib ln -s /Library/PostgreSQL/9.5/lib/libcrypto.1.0.0.dylib /usr/local/lib

Entonces experimenté un connection error con un mensaje que terminó:

psycopg2.OperationalError: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

Mi instalación de PostgreSQL estaba escuchando en un socket en / tmp, por lo que se necesitaba otro enlace simbólico para permitir la conexión:

ln -s /tmp/.s.PGSQL.5432 /var/pgsql_socket/


Intenté lo siguiente:

He instalado cerveza en mi máquina. Running $ brew doctor me dio una sugerencia para hacer lo siguiente:

$ sudo chown -R $(whoami):admin /usr/local

Una vez hecho esto, reinstalé psycopg2 y psycopg2 lo siguiente:

$ sudo ln -s /Library/PostgreSQL/9.3/lib/libssl.1.0.0.dylib /usr/local/lib/ $ sudo ln -s /Library/PostgreSQL/9.3/lib/libcrypto.1.0.0.dylib /usr/local/lib/

Tenga en cuenta la versión de su PostgreSQL y la ruta /usr/local/lib .

Al hacer esto, volví a la configuración de trabajo otra vez.

PD: El paso sugerido para la preparación podría no ser relevante aquí, pero lo puse porque estabas viendo problemas con los permisos. También puede desactivar el modo sin raíz.


La razón es, en efecto, psycopg2 usando rutas relativas a unas pocas bibliotecas PostgreSQL. Para solucionarlo utilicé

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

para convertir los caminos relativos a los absolutos. Por supuesto, debería hacer esto cada vez que reinstale psycopg2.