postgres must installed instal python postgresql psycopg2

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!




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.