Sie müssen postgresql-server-dev-XY zum Erstellen einer serverseitigen Erweiterung oder libpq-dev zum Erstellen einer clientseitigen Anwendung installieren


243

Ich arbeite an einem Django-Projekt mit virtualenv und verbinde es mit der lokalen Postgres-Datenbank. Wenn ich das Projekt starte, heißt es:

ImportError: No module named psycopg2.extensions

dann habe ich diesen Befehl verwendet, um zu installieren

pip install psycopg2

dann gibt es während der Installation folgenden Fehler.

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

Haben Sie dieses Paket installiert? Wenn nicht, sollte das Problem durch die Installation behoben werden. Bitte beachten Sie, dass die Installation postgresql-server-X.Yallein nicht helfen würde, da nur die Server-Binärdateien, Bibliotheken und Datendateien installiert werden, nicht die Entwicklungsdateien (die im oben genannten Paket enthalten sind).
Abrixas2

Antworten:


490

Verwenden Sie die folgenden Befehle, um den Fehler zu beheben:

sudo apt-get install postgresql

dann feuern:

sudo apt-get install python-psycopg2

und zuletzt:

sudo apt-get install libpq-dev

36
Ich brauchte nur Client-Bibliotheken. "sudo apt-get install libpq-dev" hat es für mich gelöst. Danke
Priyeshj

6
Ich stellte fest, dass ich zusätzlich installieren musste sudo apt-get install python-dev, damit es endlich funktioniert
ScottMcC

18
Danke dir! sudo apt-get install libpq-devhat für mich gearbeitet!
Julian Guterman

1
@ ManishShrivastava, Willkommen
MegaBytes

1
Verwenden Sie sudo apt-get install python3-psycopg2, um zu Python3
Ramesh Verma

67

Ich führe diesen Befehl einfach als Root vom Terminal aus aus und das Problem ist gelöst.

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

oder

sudo apt-get install libpq-dev python-dev
pip install psycopg2

5
Vielen Dank libpq-devund python-devtat die notwendige Magie
Avtomaton

2
postgis? woot
techkuz

Manchmal behebt das Ausführen von sudo apt update diese Art von Fehlern. Ich habe beide Lösungen ausprobiert, bin aber gescheitert. Mit sudo apt udpate wurde es gelöst.
Aleem

46

Installieren Sie einfach libpq-dev

$ sudo apt-get install libpq-dev

30

Für mich löste dieser einfache Befehl das Problem:

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

Dann kann ich tun:

 pip install psycopg2

14

Für Python 3 habe ich:

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

und dann konnte ich tun:

pip3 install psycopg2

13

Sie haben die Verpackung für psycopg2 geändert. Die Installation der Binärversion hat dieses Problem für mich behoben. Die obigen Antworten halten immer noch an, wenn Sie die Binärdatei selbst kompilieren möchten.

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

Binärpakete werden standardmäßig nicht mehr installiert. Das Paket 'psycopg2-binary' muss explizit verwendet werden.

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

Wenn Sie also keine eigene Binärdatei kompilieren müssen, verwenden Sie:

pip install psycopg2-binary

1
Ihr Herr hat mir das Leben gerettet
Haroun Hajem

3
psycopg2-binarydarf nicht in der Produktion verwendet werden, da dies zu Fehlern führen kann.
Suhailvs

1
psycopg2-binarysollte nicht in der Produktion verwendet werden: initd.org/psycopg/docs/install.html#binary-install-from-pypi (Kopierter Text: Das psycopg2-Binärpaket ist für Anfänger gedacht, die ohne Notwendigkeit mit Python und PostgreSQL spielen möchten Erfüllen Sie die Build-Anforderungen. Wenn Sie ein von psycopg2 abhängiges Veröffentlichungspaket verwalten, sollten Sie 'psycopg2-binary' nicht als Modulabhängigkeit verwenden. Für die Verwendung in der Produktion wird empfohlen, die Quelldistribution zu verwenden.)
Joseph Victor Zammit

10

Sie müssen postgresql-server-dev-XY einrichten, in dem die Serverversion von XY your ist. Anschließend werden libpq-dev und andere Servervariablen in Modulen für die serverseitige Entwicklung installiert. In meinem Fall war es

apt-get install postgresql-server-dev-9.5

Lesen von Paketlisten ... Fertig Erstellen des Abhängigkeitsbaums Lesen von Statusinformationen ... Fertig Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt: libmysqlclient18 mysql-common Verwenden Sie 'apt-get autoremove', um sie zu entfernen. Die folgenden zusätzlichen Pakete werden installiert:
libpq-dev Vorgeschlagene Pakete: postgresql-doc-10 Die folgenden NEUEN Pakete werden installiert: libpq-dev postgresql-server-dev-9.5

In deinem Fall

sudo apt-get install postgresql-server-dev-X.Y
sudo apt-get install python-psycopg2

4

Ich habe eine virtuelle Umgebung unter Ubuntu 18.04 verwendet und da ich sie nur als Client installieren wollte, musste ich nur Folgendes tun:

sudo apt install libpq-dev
pip install psycopg2

Und ohne Probleme installiert. Natürlich können Sie die Binärdatei wie in anderen Antworten angegeben verwenden, aber ich habe diese Lösung bevorzugt, da sie in einer Datei "require.txt" angegeben wurde.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.