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.