Vous devez installer postgresql-server-dev-XY pour créer une extension côté serveur ou libpq-dev pour créer une application côté client

243

Je travaille sur le projet Django avec virtualenv et le connecte à la base de données postgres locale. quand je dirige le projet dit,

ImportError: No module named psycopg2.extensions

alors j'ai utilisé cette commande pour installer

pip install psycopg2

puis lors de l'installation il donne l'erreur suivante.

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
la source
Avez-vous installé ce package? Sinon, son installation devrait résoudre le problème. Veuillez noter que l'installation postgresql-server-X.Yseule ne serait pas utile, car cela installe simplement le binaire du serveur, les bibliothèques et les fichiers de données, pas les fichiers de développement (qui sont dans le package susmentionné).
Abrixas2

Réponses:

491

Utilisez ces commandes suivantes, cela résoudra l'erreur:

sudo apt-get install postgresql

puis tirez:

sudo apt-get install python-psycopg2

enfin:

sudo apt-get install libpq-dev
Mégaoctets
la source
36
J'avais juste besoin de bibliothèques client. "sudo apt-get install libpq-dev" l'a résolu pour moi. Merci
Priyeshj
6
J'ai trouvé que je devais également installer sudo apt-get install python-deven plus pour le faire enfin fonctionner
ScottMcC
18
Je vous remercie! sudo apt-get install libpq-devtravaillé pour moi!
Julian Guterman
1
@ManishShrivastava, Bienvenue
MegaBytes
1
utiliser sudo apt-get install python3-psycopg2pour ajouter à python3
Ramesh Verma
67

Je viens d'exécuter cette commande en tant que racine à partir du terminal et le problème est résolu,

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

ou

sudo apt-get install libpq-dev python-dev
pip install psycopg2
Muhammad Taqi
la source
5
Merci beaucoup, libpq-devet vous python-dev
avez
2
postgis? woot
techkuz
Parfois, l'exécution de sudo apt update corrigera ce type d'erreurs. J'ai essayé les deux solutions mais j'ai échoué. l'exécution de sudo apt udpate l'a résolu.
Aleem
46

Installez simplement libpq-dev

$ sudo apt-get install libpq-dev
Ivan
la source
30

Pour moi, cette simple commande a résolu le problème:

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

Ensuite, je peux faire:

 pip install psycopg2
ruhanbidart
la source
14

Pour Python 3, j'ai fait:

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

puis j'ai pu faire:

pip3 install psycopg2
Garrett
la source
13

Ils ont changé l'emballage de psycopg2. L'installation de la version binaire a résolu ce problème pour moi. Les réponses ci-dessus tiennent toujours si vous voulez compiler le binaire vous-même.

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

Les packages binaires ne sont plus installés par défaut. Le package 'psycopg2-binary' doit être utilisé explicitement.

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

Donc, si vous n'avez pas besoin de compiler votre propre binaire, utilisez:

pip install psycopg2-binary
robkorv
la source
1
Vous monsieur m'a sauvé la vie
Haroun Hajem
3
psycopg2-binaryne doit pas être utilisé en production, car cela entraînera quelques bugs.
suhailvs
1
psycopg2-binaryne doit pas être utilisé en production: initd.org/psycopg/docs/install.html#binary-install-from-pypi (Texte copié: le package psycopg2-binary est destiné aux débutants qui souhaitent commencer à jouer avec Python et PostgreSQL sans avoir besoin de répondre aux exigences de construction. Si vous êtes le responsable d'un package de publication dépendant de psycopg2, vous ne devez pas utiliser 'psycopg2-binary' comme dépendance de module. Pour une utilisation en production, il est conseillé d'utiliser la distribution source.)
Joseph Victor Zammit
10

Vous devez configurer postgresql-server-dev-XY, où XY est la version de vos serveurs, et il installera libpq-dev et d'autres variables de serveurs au niveau des modules pour le développement côté serveur. Dans mon cas, c'était

apt-get install postgresql-server-dev-9.5

Lecture des listes de packages ... Terminé Construction de l'arborescence des dépendances Lecture des informations d'état ... Terminé Les packages suivants ont été installés automatiquement et ne sont plus nécessaires: libmysqlclient18 mysql-common Utilisez 'apt-get autoremove' pour les supprimer. Les packages supplémentaires suivants seront installés:
libpq-dev Packages suggérés: postgresql-doc-10 Les NEW packages suivants seront installés: libpq-dev postgresql-server-dev-9.5

Dans votre cas

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

J'utilisais un environnement virtuel sur Ubuntu 18.04, et comme je voulais seulement l'installer en tant que client, je n'avais qu'à faire:

sudo apt install libpq-dev
pip install psycopg2

Et installé sans problème. Bien sûr, vous pouvez utiliser le binaire comme d'autres réponses l'ont dit, mais j'ai préféré cette solution car elle était indiquée dans un fichier requirements.txt.

Checo R
la source