python - must - psycopg2 postgres 10
error al instalar psycopg2, biblioteca no encontrada para-lssl (11)
Cuando ejecuto
brew link openssl
me sale el siguiente mensaje:
$ brew link openssl
Warning: Refusing to link: openssl
Linking keg-only openssl means you may end up linking against the insecure,
deprecated system OpenSSL while using the headers from Homebrew''s openssl.
Instead, pass the full include/library paths to your compiler e.g.:
-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib
Siguiendo este consejo, aquí está el comando
pip
que debe usar:
$ pip install -r requirements.txt --global-option=build_ext --global-option="-I/usr/local/opt/openssl/include" --global-option="-L/usr/local/opt/openssl/lib"
Ejecuto "sudo pip install psycopg2" y obtengo un montón de resultados que se parecen a
cc -DNDEBUG -g -fwrapv -Os .....
.....
cc -DNDEBUG -g -fwrapv -Os .....
.....
Y al final dice:
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command ''cc'' failed with exit status 1
----------------------------------------
Cleaning up...
Command /usr/bin/python -c "import setuptools, tokenize;__file__=''/private/var/folders/bz/pvj1g9xj16d10pjjgbrfl3fw0000gn/T/pip_build_root/psycopg2/setup.py'';exec(compile(getattr(tokenize, ''open'', open)(__file__).read().replace(''/r/n'', ''/n''), __file__, ''exec''))" install --record /var/folders/bz/pvj1g9xj16d10pjjgbrfl3fw0000gn/T/pip-uE3thn-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /private/var/folders/bz/pvj1g9xj16d10pjjgbrfl3fw0000gn/T/pip_build_root/psycopg2
Storing debug log for failure in /Users/Tyler/Library/Logs/pip.log
Ejecutar easy_install o hacerlo desde la fuente me da el mismo error al final (la parte sobre la biblioteca no se encuentra para -lssl).
Ejecutar brew install (o upgrade) openssl produce lo siguiente
$ brew upgrade openssl
Error: openssl-1.0.1h already installed
¿Puede alguien ayudarme?
En lugar de instalar
psycopg2
, instale
psycopg2-binary
, de los mismos autores:
$ pip install psycopg2-binary
Esto es lo que dice la documentación sobre este paquete PyPI:
Puede obtener un [...] paquete independiente, que no requiere un compilador o bibliotecas externas, instalando el paquete psycopg2-binary de PyPI:
brew install openssl env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" <YOUR COMMAND HERE>
El paquete binario es una opción práctica para el desarrollo y las pruebas, pero en producción se recomienda utilizar el paquete creado a partir de fuentes.
En mojave agregué estos al .bash_profile
$ brew link openssl
Warning: Refusing to link macOS-provided software: openssl
If you need to have openssl first in your PATH run:
echo ''export PATH="/usr/local/opt/openssl/bin:$PATH"'' >> ~/.zshrc
For compilers to find openssl you may need to set:
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"
$ pip install psycopg2
Collecting psycopg2
Using cached https://files.pythonhosted.org/packages/23/7e/93c325482c328619870b6cd09370f6dbe1148283daca65115cd63642e60f/psycopg2-2.8.2.tar.gz
Installing collected packages: psycopg2
Running setup.py install for psycopg2 ... done
Successfully installed psycopg2-2.8.2
pude instalar psycopg 2.8.3 en un python 3.7.4 virtualenv.
Esto después de reinstalar xcode y las herramientas de línea de comando.
Todas las respuestas anteriores ayudaron!
Estaba teniendo este problema en Mojave. Mojave no crea un directorio / usr / include, que debe instalar psycopg2. Esto no fue obvio. Encontré la solución aquí: Cómo actualizar Xcode desde la línea de comandos , que hace referencia a: https://forums.developer.apple.com/thread/104296
Este es el problema de la nueva versión de macOs, donde pip no puede instalar
cryptography
.
Lo que solucionó mi problema es proporcionar el entorno al comando de instalación:
pip install psycopg2-binary
Puede reemplazar
<YOUR COMMAND HERE>
con
pip install cryptography
, o
pip install <SOMETHING THAT REQUIRES cryptography>
por ejemplo.
Crédito a este artículo: Corrección del error fatal de macOS Sierra: no se encuentra el archivo ''openssl / opensslv.h'' o ''openssl / aes.h''
Lo que funcionó para mí fue la pista proporcionada en el comando para vincular openssl,
export PATH="/usr/local/opt/openssl/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/curl/lib -L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/curl/include -I/user/local/opt/openssl/include"
Me las arreglé para solucionarlo usando:
brew unlink openssl && brew link openssl --force
No estoy seguro de cómo esto difiere de las breves desinstalaciones / actualizaciones que hice en OpenSSL en intentos anteriores que hice. Mi suposición es que estas operaciones dejaron algunas de las bibliotecas compartidas "defectuosas" que impedían que esto funcionara. Tenga en cuenta que esto también solucionó problemas con la instalación del módulo de criptografía python.
Para cualquiera que busque una solución para esto en macOS Sierra 10.12: lo arreglé instalando las herramientas de línea de comandos:
xcode-select --install
Después de eso,
pip install psycopg2
debería funcionar.
Si no es así, también puede intentar vincular contra brew openssl:
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2
con openssl instalado a través de brew.
Tenga en cuenta que el
brew link openssl --force
ya no funciona:
$ brew link openssl --force 17.5s
Warning: Refusing to link: openssl
Linking keg-only openssl means you may end up linking against the insecure,
deprecated system OpenSSL while using the headers from Homebrew''s openssl.
Instead, pass the full include/library paths to your compiler e.g.:
-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib
Como @macho señala a continuación si esto aún no funciona, es posible que deba usar la
--no-cache
de pip, por ejemplo
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip --no-cache install psycopg2
Recientemente tuve este problema en High Sierra, después de haber instalado Python 3.7 en un virtualenv.
La solución es usar una versión posterior de psycopg2. La versión 2.7.7 funcionó, donde 2.7.1 no.
Tenía OpenSSL instalado desde brew (
brew install openssl
)
Lo siguiente funcionó para mí:
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
pip install psycopg2
Usando Fish, los siguientes dos comandos me resolvieron este problema después de instalar OpenSSL usando Homebrew.
set -gx LDFLAGS "-L/usr/local/opt/openssl/lib"
set -gx CPPFLAGS "-I/usr/local/opt/openssl/include"
Utilice
brew info openssl
para obtener información actualizada.