Je travaille sur Django projet avec virtualenv et le connecte à la base de données postgres locale. quand je lance le projet est dit,
ImportError: No module named psycopg2.extensions
alors j'ai utilisé cette commande pour installer
pip install psycopg2
puis lors de l'installation, l'erreur suivante est générée.
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
Utilisez les 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
Je viens d'exécuter cette commande en tant que racine 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
Pour moi, cette simple commande a résolu le problème:
Sudo apt-get install postgresql postgresql-contrib libpq-dev python-dev
Alors je peux faire:
pip install psycopg2
Il suffit d'installer libpq-dev
$ Sudo apt-get install libpq-dev
Pour Python 3, j'ai:
Sudo apt install python3-dev postgresql postgresql-contrib python3-psycopg2 libpq-dev
et puis j'ai pu faire:
pip3 install psycopg2
Vous devez configurer postgresql-server-dev-X.Y, où X.Y. votre version de serveur, et il installera libpq-dev et d’autres variables de serveur aux 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 paquets ... Terminé Construction de l'arbre de dépendance 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 paquets supplémentaires suivants seront installés:
libpq-dev Paquets suggérés: postgresql-doc-10 Les NOUVEAUX paquets 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
Ils ont changé l'emballage pour 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 paquets 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
J'utilisais un environnement virtuel sous Ubuntu 18.04, et comme je ne voulais que l'installer en tant que client, je n'avais qu'à faire:
Sudo apt install libpq-dev
pip install psycopg2
Et installé sans problèmes. Bien sûr, vous pouvez utiliser le binaire comme le disent d’autres réponses, mais j’ai préféré cette solution car elle figurait dans un fichier Requirements.txt.