Debe instalar postgresql-server-dev-XY para crear una extensión del lado del servidor o libpq-dev para crear una aplicación del lado del cliente

243

Estoy trabajando en el proyecto Django con virtualenv y lo conecto a la base de datos local de postgres. cuando ejecuto el proyecto dice:

ImportError: No module named psycopg2.extensions

entonces usé este comando para instalar

pip install psycopg2

entonces durante la instalación da el siguiente error.

Downloading/unpacking psycopg2==2.4.4
  Downloading psycopg2-2.4.4.tar.gz (648kB): 648kB downloaded
  Running setup.py (path:/home/muhammadtaqi/Projects/MyProjects/OnlineElectionCampaign/venv/build/psycopg2/setup.py) egg_info for package psycopg2

    Error: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.

    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: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.



----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /home/muhammadtaqi/Projects/MyProjects/OnlineElectionCampaign/venv/build/psycopg2
Storing debug log for failure in /home/muhammadtaqi/.pip/pip.log
Muhammad Taqi
fuente
¿Has instalado ese paquete? Si no, instalarlo debería resolver el problema. Tenga en cuenta que la instalación por postgresql-server-X.Ysí sola no ayudaría, porque eso solo instala los archivos binarios, las bibliotecas y los archivos de datos del servidor, no los archivos de desarrollo (que se encuentran en el paquete mencionado anteriormente).
Abrixas2

Respuestas:

491

Utilice estos siguientes comandos, esto resolverá el error:

sudo apt-get install postgresql

luego fuego:

sudo apt-get install python-psycopg2

y última:

sudo apt-get install libpq-dev
Megabytes
fuente
36
Solo necesitaba libs de clientes. "sudo apt-get install libpq-dev" lo resolvió por mí. Gracias
Priyeshj
66
Descubrí que también tenía que instalar sudo apt-get install python-devpara que finalmente funcionara
ScottMcC
18
¡Gracias! sudo apt-get install libpq-dev¡trabajó para mi!
Julian Guterman
1
@ManishShrivastava, Bienvenido
MegaBytes
1
usar sudo apt-get install python3-psycopg2para agregar a python3
Ramesh Verma
67

Acabo de ejecutar este comando como root desde la terminal y el problema está resuelto,

sudo apt-get install -y postgis postgresql-9.3-postgis-2.1
pip install psycopg2

o

sudo apt-get install libpq-dev python-dev
pip install psycopg2
Muhammad Taqi
fuente
55
Muchas gracias, libpq-deve python-devhice magia necesaria
avtomaton
2
postgis? woot
techkuz
A veces, ejecutar sudo apt update reparará este tipo de errores. Intenté ambas soluciones pero fallé. ejecutando sudo apt udpate lo resolvió.
Aleem
46

Simplemente instale libpq-dev

$ sudo apt-get install libpq-dev
Ivan
fuente
30

Para mí, este simple comando resolvió el problema:

sudo apt-get install postgresql postgresql-contrib libpq-dev python-dev

Entonces puedo hacer:

 pip install psycopg2
ruhanbidart
fuente
14

Para Python 3, hice:

sudo apt install python3-dev postgresql postgresql-contrib python3-psycopg2 libpq-dev

y luego pude hacer:

pip3 install psycopg2
Garrett
fuente
13

Cambiaron el empaque para psycopg2. Instalar la versión binaria solucionó este problema para mí. Las respuestas anteriores aún se mantienen si desea compilar el binario usted mismo.

Ver http://initd.org/psycopg/docs/news.html#what-s-new-in-psycopg-2-8 .

Los paquetes binarios ya no se instalan por defecto. El paquete 'psycopg2-binary' debe usarse explícitamente.

Y http://initd.org/psycopg/docs/install.html#binary-install-from-pypi

Entonces, si no necesita compilar su propio binario, use:

pip install psycopg2-binary
robkorv
fuente
1
Usted señor me salvó la vida
Haroun Hajem
3
psycopg2-binaryno debe usarse en producción, ya que provocará algunos errores.
suhailvs
1
psycopg2-binaryno debe usarse en producción: initd.org/psycopg/docs/install.html#binary-install-from-pypi (Texto copiado: el paquete psycopg2-binary está diseñado para que los principiantes comiencen a jugar con Python y PostgreSQL sin la necesidad de cumpla con los requisitos de compilación. Si usted es el encargado de mantener un paquete de publicación que depende de psycopg2, no debe usar 'psycopg2-binary' como una dependencia del módulo. Para el uso en producción, se recomienda usar la distribución de origen.)
Joseph Victor Zammit
10

Debe configurar postgresql-server-dev-XY, donde XY es la versión de sus servidores, e instalará libpq-dev y otras variables de servidores en los módulos para el desarrollo del lado del servidor. En mi caso fue

apt-get install postgresql-server-dev-9.5

Lectura de listas de paquetes ... Listo Creación del árbol de dependencia Lectura de información de estado ... Listo Los siguientes paquetes se instalaron automáticamente y ya no son necesarios: libmysqlclient18 mysql-common Use 'apt-get autoremove' para eliminarlos. Se instalarán los siguientes paquetes adicionales:
libpq-dev Paquetes sugeridos: postgresql-doc-10 Se instalarán los siguientes NUEVOS paquetes: libpq-dev postgresql-server-dev-9.5

En tu caso

sudo apt-get install postgresql-server-dev-X.Y
sudo apt-get install python-psycopg2
Max Sherbakov
fuente
4

Estaba usando un entorno virtual en Ubuntu 18.04, y como solo quería instalarlo como cliente, solo tenía que hacer:

sudo apt install libpq-dev
pip install psycopg2

E instalado sin problemas. Por supuesto, puede usar el binario como dicen otras respuestas, pero prefiero esta solución ya que se indicó en un archivo require.txt.

Checo R
fuente