¿Cómo instalar psycopg2 con "pip" en Python?


506

Estoy usando virtualenvy necesito instalar "psycopg2".

He hecho lo siguiente:

pip install http://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160

Y tengo los siguientes mensajes:

Downloading/unpacking http://pypi.python.org/packages/source/p/psycopg2/psycopg2
-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
  Downloading psycopg2-2.4.tar.gz (607Kb): 607Kb downloaded
  Running setup.py egg_info for package from http://pypi.python.org/packages/sou
rce/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
    Error: pg_config executable not found.

    Please add the directory containing pg_config to the PATH
    or specify the full executable path with the option:

        python setup.py build_ext --pg-config /path/to/pg_config build ...

    or with the pg_config option in 'setup.cfg'.
    Complete output from command python setup.py egg_info:
    running egg_info

creating pip-egg-info\psycopg2.egg-info

writing pip-egg-info\psycopg2.egg-info\PKG-INFO

writing top-level names to pip-egg-info\psycopg2.egg-info\top_level.txt

writing dependency_links to pip-egg-info\psycopg2.egg-info\dependency_links.txt

writing manifest file 'pip-egg-info\psycopg2.egg-info\SOURCES.txt'

warning: manifest_maker: standard file '-c' not found

Error: pg_config executable not found.



Please add the directory containing pg_config to the PATH

or specify the full executable path with the option:



    python setup.py build_ext --pg-config /path/to/pg_config build ...



or with the pg_config option in 'setup.cfg'.

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in C:\Documents and Settings\anlopes\Application Data\pip\p
ip.log

Mi pregunta, ¿solo necesito hacer esto para que el psycopg2 funcione?

python setup.py build_ext --pg-config /path/to/pg_config build ...

3
¿Funcionó cuando probaste python setup.py build_ext --pg-config / path / to / pg_config build ... ??
lajarre

2
Para python 3.4 o python 3.5, debe instalar el paquete de desarrollo de verion correspondiente como sudo apt install libpq-dev python3.4-devosudo apt install libpq-dev python3.5-dev
Avinash Raj

Respuestas:


810

Nota : Desde hace un tiempo, hay ruedas binarias para Windows en PyPI, por lo que esto ya no debería ser un problema para los usuarios de Windows. A continuación hay soluciones para usuarios de Linux y Mac, ya que muchos de ellos encuentran esta publicación a través de búsquedas web.


Opción 1

Instale el psycopg2-binarypaquete PyPI en su lugar, tiene ruedas Python para Linux y Mac OS.

pip install psycopg2-binary

opcion 2

Instale los requisitos previos para compilar el psycopg2paquete desde el origen:

Debian / Ubuntu

Python 3

sudo apt install libpq-dev python3-dev

Es posible que necesite instalar python3.8-devo similar, por ejemplo, Python 3.8.

Python 2 1

sudo apt install libpq-dev python-dev

Si eso no es suficiente, intente

sudo apt install build-essential

o

sudo apt install postgresql-server-dev-all

también antes de instalar psycopg2 nuevamente.

CentOS 6

Ver la respuesta de Banjer


1 realmente? Es 2020


77
11.04: diferentes errores, la misma solución. ¡Adoración a las versiones de desarrollo!
I159

55
@ I159: los *-devpaquetes contienen los archivos necesarios para compilar una aplicación de origen que usa las funciones proporcionadas por la biblioteca (como psycopg2las bibliotecas libpqy python, entre otras).
joar

21
Estoy usando Ubuntu 12.04 LTS, y también tuve que hacerlosudo apt-get install postgresql-server-dev-all
caleb

44
¿Podría alguien explicar por qué no solo el directorio que contiene pg_config a la RUTA (o usar --pg-config)?
lajarre

55
Si está aquí porque tiene problemas para instalar psycopg2 en el contenedor Python 3 Celery de Dockerhub, también necesitará instalar build-essential consudo apt-get install -y build-essential
deriva

118

En CentOS, necesita los paquetes de desarrollo de postgres:

sudo yum install python-devel postgresql-devel

Esa fue la solución en CentOS 6 al menos.


1
Esto no es solo CentOS, creo. psycopg tiene dependencias nativas, por lo que para construir desde la fuente (que es lo que hace pip), las bibliotecas de desarrollo de PostgreSQL deben estar allí. (¿Los encabezados C, tal vez? No sé mucho sobre compilar código nativo.)
jpmc26

3
Estoy de acuerdo en que esto resuelve el problema en CentOS 6. Me gustaría agregar que tuve que agregar /usr/pgsql-9.3/bin a $ PATH. Aquí hay una publicación que da un ejemplo de cómo hacerlo. serverfault.com/questions/102932/…
Ryder Brooks

Para CentOS 7 y Python 3.4 tuve que instalar "python34-devel". Mi respuesta a una pregunta relacionada: stackoverflow.com/a/42370489/26219
Mark Edington

Trabajó en AWS EC2, con Amazon Linux / 2.5.1 de 64 bits basado en RHEL
Ben Wheeler

Para el uso de Python3 en Fedora sudo yum install python36-devel(reemplace 36 con su versión de Python 3).
LoMaPh

85

En Mac Mavericks con Postgres.app versión 9.3.2.0 RC2, necesitaba usar el siguiente código después de instalar Postgres:

sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2


sudo PATH = $ PATH: /Applications/Postgres93.app/Contents/MacOS/bin pip install psycopg2 [a partir del 5 de abril de 2014]
usuario798719

2
si está utilizando virtualenv no necesita 'sudo', active su virtualenv y ejecute 'PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2'
elin3t

3
Mi caso OS X Ver 10.9.4: sudo PATH = $ PATH: /Library/PostgreSQL/9.2/bin pip install psycopg2
emecas

3
Sí, esto también funcionó para mí. Después de instalar PostgreSQL, tuve que establecer mi camino haciendo PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2.
iamfrancisyo

44
Use la última versión: PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/latest/bin pip install psycopg2
Diego Sarmiento

80

si estás en una Mac puedes usar homebrew

brew install postgresql

Y todas las demás opciones están aquí: http://www.postgresql.org/download/macosx/

Buena suerte


2
La respuesta de Nichochar y la respuesta de Attomos (instalar Postgresql y modificar la ruta) juntas resolvieron el problema por mí. La forma más fácil de editar la ruta es ejecutar "sudo nano / etc / path" desde su terminal.
tbradley22

2
Gracias por esto. ¡Estaba a punto de volverme loco antes de encontrar esto!
Leo C Han

1
También funcionó para mí, no es necesario seguir mi camino (y, en general, no recomendaría sudo aquí, deberías poder hacer esto en el espacio del usuario).
duozmo 01 de

Esto no instala el postgresql en la virtualenvforma en que el OP preguntó.
Jorge Leitao

No creo que OP necesariamente quisiera postgres en virtualenv. Dijo que está usando virtualenv. Creo que entendió mal que postgresql es un servicio más grande que simplemente una biblioteca de Python.
nichochar

61

Recientemente configuré psycopg2 en una máquina con Windows. La instalación más fácil es usar un binario ejecutable de Windows. Puede encontrarlo en http://stickpeople.com/projects/python/win-psycopg/ .

Para instalar el binario nativo en un entorno virtual, use easy_install:

C:\virtualenv\Scripts\> activate.bat
(virtualenv) C:\virtualenv\Scripts\> easy_install psycopg2-2.5.win32-py2.7-pg9.2.4-release.exe

3
Gracias por la respuesta. Pero necesito instalarlo en un entorno virtual. Saludos cordiales,
André

44
Este truco (cortesía, Ned Batchelder) me ha ayudado en el pasado a instalar desde binarios a un virtualenv
Praveen Gollakota

13
¿Realmente no hay forma de hacer que "pip install psycopg2" funcione en Windows? Incluso si es necesario un parche para psycopg2, valdría la pena.
Slacy

1
Recibí este error cuando Postgres no estaba instalado en mi máquina - Instalé Postgres y el error desapareció ...
Sam Joseph

2
el enlace stickpeople también analiza el entorno virtual y apunta a una versión de instalación de pip github.com/nwcell/psycopg2-windows
seanv507

27

Para Python 3 debe usar sudo apt-get install libpq-dev python3-devbajo Debian.


27

Esto es lo que funcionó para mí (en RHEL, CentOS:

sudo yum install postgresql postgresql-devel python-devel

Y ahora incluya la ruta a su directorio binario postgresql con su instalación pip:

sudo PATH=$PATH:/usr/pgsql-9.3/bin/ pip install psycopg2

Asegúrese de incluir la ruta correcta. Eso es todo :)

ACTUALIZACIÓN: para python 3, instale en python3-devellugar depython-devel


Tenga en cuenta que no necesitaba actualizar la variable de entorno PATH.
sombrío

No debería tener que hacerlo si recarga su sesión de terminal.
radtek

Excelente Muchas gracias.
Jorge Vidinha

Si está utilizando Python 3, deberá instalar paquetes de desarrollo de Python numerados. Ver: stackoverflow.com/a/42370489/26219
Mark Edington

21

Si usa Mac OS, debe instalar PostgreSQL desde la fuente. Una vez finalizada la instalación, debe agregar esta ruta utilizando:

export PATH=/local/pgsql/bin:$PATH

o puede agregar la ruta de esta manera:

export PATH=.../:usr/local/pgsql/bin

en su .profilearchivo o .zshrcarchivo.

Esto puede variar según el sistema operativo.

Puede seguir el proceso de instalación desde http://www.thegeekstuff.com/2009/04/linux-postgresql-install-and-configure-from-source/


1
¿Por qué de la fuente en lugar de Homebrew?
duozmo 01 de

@duozmo fue respondido en 2012 y creo que intenté instalarlo con Homebrew en ese momento, pero falló. Ahora, he instalado PostgreSQL usando Homebrew sin ningún problema.
attomos

17

Las respuestas hasta ahora son muy parecidas a las recetas mágicas. El error que recibió le indica que pip no puede encontrar una parte necesaria de la biblioteca de consultas PostgreSQL. Posiblemente esto se deba a que lo tiene instalado en un lugar no estándar para su sistema operativo, razón por la cual el mensaje sugiere usar la opción --pg-config.

Pero una razón más común es que no tiene libpq instalado en absoluto. Esto ocurre comúnmente en máquinas donde NO tiene instalado el servidor PostgreSQL porque solo desea ejecutar aplicaciones cliente, no el servidor en sí. Cada sistema operativo / distribución es diferente, por ejemplo, en Debian / Ubuntu necesita instalar libpq-dev. Esto le permite compilar y vincular código con la biblioteca de consultas PostgreSQL.

La mayoría de las respuestas también sugieren instalar una biblioteca de desarrollo de Python. Ten cuidado. Si solo está utilizando el Python predeterminado instalado por su distribución, eso funcionará, pero si tiene una versión más nueva, podría causar problemas. Si ha construido Python en esta máquina, entonces ya tiene las bibliotecas de desarrollo necesarias para compilar bibliotecas C / C ++ para interactuar con Python. Siempre que esté utilizando la versión correcta de pip, la instalada en la misma carpeta bin que el binario de python, ya está todo listo. No es necesario instalar la versión anterior.


1
¿Y sobre Os x? Quiero decir, se basa en Unix, pero creo que puede ser diferente.
Lara

13

En Debian/Ubuntu:

Primero instale y cree dependencias del psycopg2paquete:

# apt-get build-dep python-psycopg2

Luego, en su entorno virtual, compile e instale el psycopg2módulo:

(env)$ pip install psycopg2

6

He hecho esto antes, donde en Windows instalas primero en tu instalación base de Python.

Luego, copia manualmente el psycopg2 instalado a la instalación virtualenv.

No es bonito, pero funciona.


2
puedes elaborar por favor. ¿Dónde obtienes el psycopg2 en primer lugar?
Saher Ahwal

2
los binarios de Windows están disponibles en stickpeople.com/projects/python/win-psycopg
monkut el

También hice esto, después de días agotadores y todas las demás opciones que se han descrito en línea. Todavía estoy atónito sobre lo que impedía que se instalara con pip in venv. Pude instalar fuera del entorno virtual, no hay problema. Luego, literalmente copié ese archivo del directorio de la biblioteca de paquetes de Python y lo pegué en el mismo dentro de venv. Mi presentimiento es que, debido a que mis versiones de Python son distribuciones de Anaconda, que había algo mal con la ruta que se suponía / usaba.
kuanb

5

Además de instalar los paquetes requeridos, también necesitaba agregar manualmente el directorio bin PostgreSQL a PATH.
$vi ~/.bash_profile
Añadir PATH=/usr/pgsql-9.2/bin:$PATHantes export PATH.
$source ~/.bash_profile
$pip install psycopg2


¿Alguna idea de por qué esto no termina en la ruta predeterminada?
Bret

1
Obtuve un error como este, cómo corregir esto, ¡¡¡¡¡por favor, ayúdame !!! Comando "/ usr / bin / python -c" importar setuptools, tokenize; __ file __ = '/ private / tmp / pip-build-AUbwwG / psycopg2 / setup.py'; exec (compile (getattr (tokenize, 'open', open ) ( archivo ) .read (). replace ('\ r \ n', '\ n'), archivo , 'exec')) "install --record /tmp/pip-44Va05-record/install-record.txt --single-version-externally-managed --compile "falló con el código de error 1 en / private / tmp / pip-build-AUbwwG / psycopg2
vijay

3

En Windows XP, obtiene este error si Postgres no está instalado ...


¿Estás seguro de que es correcto? Instalé postgres en mi máquina Windows y todavía lo consigo. ?
Saher Ahwal

2
¿Por qué no tienen eso en su sitio como requisito previo para tener postgres?
Saher Ahwal


3

Antes de poder instalar psycopg2, deberá instalar el paquete python-dev.

Si está trabajando desde Linux (y posiblemente otros sistemas, pero no puedo hablar por experiencia), deberá asegurarse de ser bastante exacto sobre qué versión de Python está ejecutando al instalar el paquete de desarrollo.

Por ejemplo cuando usé el comando:

sudo apt-get install python3-dev

Todavía me encontré con el mismo error al intentar

pip install psycopg2

Como estoy usando Python 3.7, necesitaba usar el comando

sudo apt-get install python3.7-dev

Una vez que hice esto, no me encontré con más problemas. Obviamente, si estás en Python versión 3.5, cambiarías ese 7 a 5.


2
Esta debería ser la respuesta, sudo apt-get install python-x.x-devsolucionó el problema.
Arbazz Hussain

2

He estado luchando con esto durante días, y finalmente he descubierto cómo hacer que el comando "pip install psycopg2" se ejecute en un virtualenv en Windows (ejecutando Cygwin).

Estaba golpeando el "pg_config ejecutable no encontrado". error, pero ya había descargado e instalado postgres en Windows. También se instaló en Cygwin; ejecutar "which pg_config" en Cygwin dio "/ usr / bin / pg_config", y ejecutar "pg_config" dio una salida sensata; sin embargo, la versión instalada con Cygwin es:

VERSIÓN = PostgreSQL 8.2.11

Esto no funcionará con la versión actual de psycopg2, que parece requerir al menos 9.1. Cuando agregué "c: \ Archivos de programa \ PostgreSQL \ 9.2 \ bin" a mi ruta de Windows, el instalador pip de Cygwin pudo encontrar la versión correcta de PostgreSQL y pude instalar el módulo con éxito usando pip. (Esto probablemente es preferible a usar la versión Cygwin de PostgreSQL de todos modos, ya que la versión nativa se ejecutará mucho más rápido).


2

En Fedora 24: para Python 3.x

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

Active su entorno virtual:

pip install psycopg2

2

Psycopg2 depende de las bibliotecas de Postgres. En Ubuntu puedes usar:

apt-get install libpq-dev

Entonces:

pip install psycopg2

No es una buena práctica mezclar paquetes pip y paquetes apt-get.
wswld

1

Para los usuarios humildes de Windows que tuvieron que instalar psycopg2 desde el siguiente enlace, simplemente instálelo en cualquier instalación de Python que haya configurado. Colocará la carpeta llamada "psycopg2" en la carpeta de paquetes del sitio de su instalación de Python.

Después de eso, simplemente copie esa carpeta en el directorio de paquetes de sitio de su virtualenv y no tendrá problemas.

aquí está el enlace donde puedes encontrar el ejecutable para instalar psycopg2

http://www.lfd.uci.edu/~gohlke/pythonlibs/


Intenté esto y obtengo psycopg2-2.6-cp34-none-win_amd64.whl no es una rueda compatible en esta plataforma.
jayeshkv

1

En OpenSUSE 13.2, esto lo solucionó:

sudo zypper in postgresql-devel 

1

Podría instalarlo en una máquina con Windows y usar Anaconda / Spyder con python 2.7 a través de los siguientes comandos:

 !pip install psycopg2

Luego, para establecer la conexión a la base de datos:

 import psycopg2
 conn = psycopg2.connect(dbname='dbname',host='host_name',port='port_number', user='user_name', password='password')

Obtuve esto trabajando con la base de datos enumerada psql -l, host localhost, puerto de base de datos predeterminado 5432, usuario enumerado \duuna vez que ingresa a psql y adivina la contraseña.
Harry Moreno

1

En distribuciones base de Arch :

sudo pacman -S python-psycopg2
pip2 install psycopg2  # Use pip or pip3 to python3


0

En Ubuntu solo necesitaba el paquete de desarrollo de postgres:

sudo apt-get install postgresql-server-dev-all

* Probado en un virtualenv


0

En OSX 10.11.6 (El Capitan)

brew install postgresql
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2

En OSX 10.12.3 (Sierra):brew install postgresql PATH=$PATH:/usr/local/Cellar/postgresql/9.6.2/bin/ pip install psycopg2
ishandutta2007

En OS X 10.14, esto resultó ser muy desafiante. Vea la solución detallada aquí: stackoverflow.com/a/57014480/2162844
Bisonbleu

0

En OSX con macports:

sudo port install postgresql96
export PATH=/opt/local/lib/postgresql96/bin:$PATH

0

Estaba teniendo este problema, la razón principal fue con 2 versiones iguales instaladas. Uno por postgres.app y uno por HomeBrew.

Si elige conservar solo la APLICACIÓN:

brew unlink postgresql
pip3 install psycopg2

0

En macOS Mojave, asegúrese de que en la última actualización con Command Line Tools 10.3, que funcionó para mí, lo actualizó con Actualización de software, la versión anterior de Command Line Tools en Mojave no funcionó para mí.


-1

Prueba esto en Gentoo:

emerge dev-libs/libpqxx

-2

En Windows, así es como funciona
En el símbolo del sistema después de instalar el matraz a través de pip en un entorno virtual, ejecute este comando

>pip install psycopg2

Mira esto

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.