Wie installiere ich psycopg2 mit "pip" auf Python?

506

Ich benutze virtualenvund ich muss "psycopg2" installieren.

Ich habe folgendes getan:

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

Und ich habe folgende Nachrichten:

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

Meine Frage, ich muss das nur tun, damit das psycopg2 funktioniert?

python setup.py build_ext --pg-config /path/to/pg_config build ...
André
quelle
3
Hat es funktioniert, als Sie versucht haben, python setup.py build_ext --pg-config / path / to / pg_config build ... ??
Lajarre
2
Für Python 3.4 oder Python 3.5 müssen Sie das entsprechende Entwicklungspaket der Version wie sudo apt install libpq-dev python3.4-devodersudo apt install libpq-dev python3.5-dev
Avinash Raj

Antworten:

809

Hinweis : In PyPI gibt es seit einiger Zeit Binärräder für Windows, sodass dies für Windows-Benutzer kein Problem mehr darstellen sollte. Im Folgenden finden Sie Lösungen für Linux- und Mac-Benutzer, da viele von ihnen diesen Beitrag über die Websuche finden.


Option 1

Installieren psycopg2-binarySie stattdessen das PyPI-Paket mit Python-Rädern für Linux und Mac OS.

pip install psycopg2-binary

Option 2

Installieren Sie die Voraussetzungen für die Erstellung des psycopg2Pakets aus dem Quellcode:

Debian / Ubuntu

Python 3

sudo apt install libpq-dev python3-dev

Möglicherweise müssen Sie python3.8-devz. B. Python 3.8 installieren oder ähnliches.

Python 2 1

sudo apt install libpq-dev python-dev

Wenn das nicht genug ist, versuchen Sie es

sudo apt install build-essential

oder

sudo apt install postgresql-server-dev-all

auch vor der erneuten Installation von psycopg2.

CentOS 6

Siehe Banjers Antwort


1 Wirklich? Es ist 2020

joar
quelle
7
11.04: verschiedene Fehler, die gleiche Lösung. Anbetung für Entwicklerversionen!
I159
5
@ I159 - Die *-devPakete enthalten die Dateien, die zum Kompilieren einer Anwendung aus dem Quellcode erforderlich sind, der die von der Bibliothek bereitgestellten Funktionen psycopg2verwendet (unter anderem die libpqund python-Bibliotheken).
Joar
21
Ich benutze Ubuntu 12.04 LTS, und ich musste auchsudo apt-get install postgresql-server-dev-all
6.
4
Könnte jemand bitte erklären, warum nicht nur das Verzeichnis mit pg_config zum PATH (oder --pg-config verwenden)?
Lajarre
5
Wenn Sie hier sind, weil Sie Probleme haben, psycopg2 in den Python 3 Celery-Container von Dockerhub zu installieren, müssen Sie auch Build-Essential mitsudo apt-get install -y build-essential
derrend
118

Unter CentOS benötigen Sie die Postgres-Entwicklungspakete:

sudo yum install python-devel postgresql-devel

Das war zumindest die Lösung für CentOS 6.

Banjer
quelle
1
Das ist nicht nur CentOS, denke ich. psycopg hat native Abhängigkeiten. Um also aus dem Quellcode zu erstellen (was pip tut), müssen die PostgreSQL-Entwicklungsbibliotheken vorhanden sein. (Die C-Header vielleicht? Ich weiß nicht viel über das Kompilieren von nativem Code.)
jpmc26
3
Ich stimme zu, dass dies das Problem unter CentOS 6 löst. Ich möchte hinzufügen, dass ich /usr/pgsql-9.3/bin zu $ ​​PATH hinzufügen musste. Hier ist ein Beitrag, der ein Beispiel dafür gibt. serverfault.com/questions/102932/…
Ryder Brooks
Für CentOS 7 und Python 3.4 musste ich "python34-devel" installieren. Meine Antwort auf eine verwandte Frage: stackoverflow.com/a/42370489/26219
Mark Edington
Arbeitete an AWS EC2 mit RHEL-basiertem 64-Bit-Amazon Linux / 2.5.1
Ben Wheeler
Verwenden Sie für Python3 in Fedora sudo yum install python36-devel(ersetzen Sie 36 durch Ihre Version von Python 3).
LoMaPh
85

Auf Mac Mavericks mit Postgres.app Version 9.3.2.0 RC2 musste ich nach der Installation von Postgres den folgenden Code verwenden:

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

Metasequoia
quelle
sudo PATH = $ PATH: /Applications/Postgres93.app/Contents/MacOS/bin pip install psycopg2 [Stand 5. April 2014]
user798719
2
Wenn Sie virtualenv verwenden, brauchen Sie 'sudo' nicht, also aktivieren Sie Ihr virtualenv und führen Sie 'PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2' aus
elin3t
3
Mein Fall OS X Ver 10.9.4: sudo PATH = $ PATH: /Library/PostgreSQL/9.2/bin pip install psycopg2
emecas
3
Ja, das hat auch bei mir funktioniert. Nach der Installation von PostgreSQL musste ich meinen Pfad festlegen PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2.
Iamfrancisyo
4
Verwenden Sie die neueste Version: PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/latest/bin pip install psycopg2
Diego Sarmiento
80

Wenn Sie auf einem Mac sind, können Sie Homebrew verwenden

brew install postgresql

Alle anderen Optionen finden Sie hier: http://www.postgresql.org/download/macosx/

Viel Glück

Nichochar
quelle
2
Die Antwort von nichochar und die Antwort von attomos (postgresql installieren und Pfad ändern) zusammen lösten das Problem für mich. Der einfachste Weg, den Pfad zu bearbeiten, besteht darin, "sudo nano / etc / path" von Ihrem Terminal aus auszuführen.
tbradley22
2
Danke dafür. Ich wollte verrückt werden, bevor ich das fand!
Leo C Han
1
Hat auch für mich funktioniert, ich muss nicht mit meinem Pfad herumspielen (und im Allgemeinen würde ich sudo hier nicht empfehlen - Sie sollten dies im Benutzerbereich tun können).
Duozmo
Dies installiert das postgresql nicht so, virtualenvwie es das OP verlangt hat.
Jorge Leitao
Ich denke nicht, dass OP unbedingt Postgres in der virtuellen Umgebung haben wollte. Er sagte, er benutze virtualenv. Ich denke, er hat falsch verstanden, dass postgresql ein größerer Dienst ist als nur eine Python-Bibliothek.
Nichochar
61

Ich habe kürzlich psycopg2 auf einem Windows-Computer konfiguriert. Die einfachste Installation ist die Verwendung einer ausführbaren Windows-Binärdatei. Sie finden es unter http://stickpeople.com/projects/python/win-psycopg/ .

Verwenden Sie easy_install, um die native Binärdatei in einer virtuellen Umgebung zu installieren:

C:\virtualenv\Scripts\> activate.bat
(virtualenv) C:\virtualenv\Scripts\> easy_install psycopg2-2.5.win32-py2.7-pg9.2.4-release.exe
Praveen Gollakota
quelle
3
Danke für die Antwort. Aber ich muss in einer virtuellen Umgebung installieren. Beste Grüße,
André
4
Dieser Trick (mit freundlicher Genehmigung von Ned Batchelder) hat mir in der Vergangenheit geholfen, von Binärdateien auf eine virtuelle
Umgebung
13
Gibt es wirklich keine Möglichkeit, "pip install psycopg2" unter Windows zum Laufen zu bringen? Selbst wenn ein Patch für psycopg2 notwendig ist, würde es sich lohnen.
Slacy
1
Ich habe diesen Fehler erhalten, als postgres nicht auf meinem Computer installiert war - ich habe postgres installiert und der Fehler ist verschwunden ...
Sam Joseph
2
Der Stickpeople-Link beschreibt auch die virtuelle Umgebung und verweist auf eine Pip-Installationsversion. github.com/nwcell/psycopg2-windows
seanv507
27

Für Python 3 sollten Sie sudo apt-get install libpq-dev python3-devunter Debian verwenden.

André
quelle
27

Das hat bei mir funktioniert (On RHEL, CentOS:

sudo yum install postgresql postgresql-devel python-devel

Und jetzt fügen Sie den Pfad zu Ihrem postgresql-Binärverzeichnis bei Ihrer Pip-Installation hinzu:

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

Stellen Sie sicher, dass Sie den richtigen Pfad angeben. Das ist alles :)

UPDATE: Für Python 3 installieren Sie bitte python3-develanstelle vonpython-devel

radtek
quelle
Beachten Sie, dass ich die Umgebungsvariable PATH nicht aktualisieren musste.
grimmig
Sie sollten es nicht müssen, wenn Sie Ihre Terminalsitzung neu laden.
Radtek
Hervorragend Vielen Dank.
Jorge Vidinha
Wenn Sie Python 3 verwenden, müssen Sie nummerierte Python-Entwicklungspakete installieren. Siehe: stackoverflow.com/a/42370489/26219
Mark Edington
21

Wenn Sie Mac OS verwenden, sollten Sie PostgreSQL von der Quelle installieren. Nach Abschluss der Installation müssen Sie diesen Pfad wie folgt hinzufügen:

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

oder Sie können den Pfad folgendermaßen anhängen:

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

in Ihrer .profileDatei oder .zshrcDatei.

Dies kann je nach Betriebssystem variieren.

Sie können den Installationsprozess unter http://www.thegeekstuff.com/2009/04/linux-postgresql-install-and-configure-from-source/ verfolgen.

Attomos
quelle
1
Warum von der Quelle anstelle von Homebrew?
Duozmo
@duozmo es wurde 2012 beantwortet und ich glaube, ich habe damals versucht, es mit Homebrew zu installieren, aber es ist fehlgeschlagen. Jetzt habe ich PostgreSQL ohne Probleme mit Homebrew installiert.
Attomos
17

Die bisherigen Antworten ähneln zu sehr magischen Rezepten. Der Fehler, den Sie erhalten haben, zeigt an, dass pip keinen benötigten Teil der PostgreSQL Query-Bibliothek finden kann. Möglicherweise liegt dies daran, dass Sie es an einem nicht standardmäßigen Ort für Ihr Betriebssystem installiert haben, weshalb in der Meldung die Verwendung der Option --pg-config vorgeschlagen wird.

Ein häufigerer Grund ist jedoch, dass libpq überhaupt nicht installiert ist. Dies geschieht normalerweise auf Computern, auf denen der PostgreSQL-Server NICHT installiert ist, da Sie nur Client-Apps ausführen möchten, nicht den Server selbst. Jedes Betriebssystem / jede Distribution ist anders. Beispielsweise müssen Sie unter Debian / Ubuntu libpq-dev installieren. Auf diese Weise können Sie Code kompilieren und mit der PostgreSQL Query-Bibliothek verknüpfen.

Die meisten Antworten schlagen auch vor, eine Python-Entwicklungsbibliothek zu installieren. Achtung. Wenn Sie nur das von Ihrer Distribution installierte Standard-Python verwenden, funktioniert dies. Wenn Sie jedoch eine neuere Version haben, kann dies zu Problemen führen. Wenn Sie Python auf diesem Computer erstellt haben, verfügen Sie bereits über die Entwicklungsbibliotheken, die zum Kompilieren von C / C ++ - Bibliotheken für die Schnittstelle mit Python erforderlich sind. Solange Sie die richtige Pip-Version verwenden, die im selben Bin-Ordner wie die Python-Binärdatei installiert ist, sind Sie fertig. Die alte Version muss nicht installiert werden.

Michael Dillon
quelle
1
Und über Os x? Ich meine, basiert auf Unix, aber ich denke, kann anders sein.
Lara
13

Am Debian/Ubuntu:

Installieren und erstellen Sie zuerst die Abhängigkeiten des psycopg2Pakets:

# apt-get build-dep python-psycopg2

Kompilieren und installieren Sie dann in Ihrer virtuellen Umgebung das psycopg2Modul:

(env)$ pip install psycopg2
Omid Raha
quelle
6

Ich habe dies zuvor getan, wo Sie in Windows zuerst in Ihre Basis-Python-Installation installieren.

Anschließend kopieren Sie das installierte psycopg2 manuell in die virtualenv-Installation.

Es ist nicht schön, aber es funktioniert.

Mönch
quelle
2
Können Sie bitte näher darauf eingehen? Woher bekommen Sie das Psycopg2 überhaupt?
Saher Ahwal
2
Windows-Binärdateien sind verfügbar unter stickpeople.com/projects/python/win-psycopg
monkut
Ich tat dies auch nach anstrengenden Tagen und allen anderen Optionen, die online beschrieben wurden. Ich bin immer noch verblüfft darüber, was verhindert hat, dass es mit Pip-In installiert wird venv. Ich konnte außerhalb der virtuellen Umgebung installieren, kein Problem. Ich habe diese Datei dann buchstäblich aus meinem Python-Paketbibliotheksverzeichnis kopiert und innerhalb derselben in das Verzeichnis eingefügt venv. Meine Vermutung ist, dass, da meine Version (en) von Python Anaconda-Distributionen sind, etwas mit dem Pfad, der angenommen / verwendet wurde, nicht stimmte.
Kuanb
5

Neben der Installation der erforderlichen Pakete musste ich auch das PostgreSQL-Bin-Verzeichnis manuell zu PATH hinzufügen. Vorher
$vi ~/.bash_profile
hinzufügen .PATH=/usr/pgsql-9.2/bin:$PATHexport PATH
$source ~/.bash_profile
$pip install psycopg2

Xtranophilist
quelle
Irgendeine Idee, warum dies nicht im Standardpfad endet?
Bret
1
Ich habe so einen Fehler bekommen, wie man das korrigiert, bitte hilf mir !!! Befehl "/ usr / bin / python -c" import setuptools, tokenize; __ file __ = '/ private / tmp / pip-build-AUbwwG / psycopg2 / setup.py'; exec (compile (getattr (tokenize, 'open', open) ) ( Datei ) .read (). Ersetzen ('\ r \ n', '\ n'), Datei , 'exec')) "install --record /tmp/pip-44Va05-record/install-record.txt - Single-Version-extern-verwaltet - Compile "fehlgeschlagen mit Fehlercode 1 in / private / tmp / pip-build-AUbwwG / psycopg2
Vijay
3

Unter Windows XP wird dieser Fehler angezeigt, wenn postgres nicht installiert ist ...

Sam Joseph
quelle
Bist du sicher, dass das richtig ist? Ich habe Postgres auf meinem Windows-Computer installiert und bekomme das immer noch. ?
Saher Ahwal
2
Warum haben sie das nicht auf ihrer Seite, um Postgres zu haben?
Saher Ahwal
3

Ich habe Postgresql92 mithilfe des RedHat / CentOS-Repositorys auf der Download-Site von PG http://www.postgresql.org/download/linux/redhat/ installiert.

Um pg_config zu erhalten, musste ich /usr/pgsql-9.2/bin zu PATH hinzufügen.

joedborg
quelle
3

Bevor Sie psycopg2 installieren können, müssen Sie das python-dev-Paket installieren.

Wenn Sie unter Linux arbeiten (und möglicherweise auf anderen Systemen, aber ich kann aus Erfahrung nicht sprechen), müssen Sie bei der Installation des Entwicklungspakets genau angeben, welche Python-Version Sie ausführen.

Zum Beispiel, als ich den Befehl verwendet habe:

sudo apt-get install python3-dev

Ich bin immer noch auf den gleichen Fehler gestoßen, als ich es versuchte

pip install psycopg2

Da ich Python 3.7 verwende, musste ich den Befehl verwenden

sudo apt-get install python3.7-dev

Sobald ich dies tat, stieß ich auf keine Probleme mehr. Wenn Sie auf Python Version 3.5 sind, würden Sie diese 7 natürlich in eine 5 ändern.

Gino
quelle
2
Dies sollte die Antwort sein, sudo apt-get install python-x.x-devdas Problem wurde behoben.
Arbazz Hussain
2

Ich habe seit Tagen damit zu kämpfen und endlich herausgefunden, wie der Befehl "pip install psycopg2" in einer virtuellen Umgebung unter Windows (unter Cygwin) ausgeführt werden kann.

Ich habe die "ausführbare Datei pg_config nicht gefunden" getroffen. Fehler, aber ich hatte bereits Postgres in Windows heruntergeladen und installiert. Es wurde auch in Cygwin installiert. Das Ausführen von "welche pg_config" in Cygwin ergab "/ usr / bin / pg_config" und das Ausführen von "pg_config" ergab eine vernünftige Ausgabe - die mit Cygwin installierte Version lautet jedoch:

VERSION = PostgreSQL 8.2.11

Dies funktioniert nicht mit der aktuellen Version von psycopg2, für die mindestens 9.1 erforderlich zu sein scheint. Als ich meinem Windows-Pfad "c: \ Programme \ PostgreSQL \ 9.2 \ bin" hinzufügte, konnte das Cygwin-Pip-Installationsprogramm die richtige Version von PostgreSQL finden und das Modul erfolgreich mit pip installieren. (Dies ist wahrscheinlich der Verwendung der Cygwin-Version von PostgreSQL vorzuziehen, da die native Version viel schneller ausgeführt wird.)

Symmetrisch
quelle
2

Auf Fedora 24: Für Python 3.x.

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

Aktivieren Sie Ihre virtuelle Umgebung:

pip install psycopg2
Rajkumar R.
quelle
2

Psycopg2 hängt von Postgres-Bibliotheken ab. Unter Ubuntu können Sie Folgendes verwenden:

apt-get install libpq-dev

Dann:

pip install psycopg2
Manish Gupta
quelle
Es ist keine gute Praxis, Pip-Pakete und Apt-Get-Pakete zu mischen.
wswld
1

Für niedrige Windows-Benutzer war es nicht möglich, psycopg2 über den folgenden Link zu installieren. Installieren Sie es einfach auf der von Ihnen eingerichteten Python-Installation. Der Ordner "psycopg2" wird im Ordner "site-packages" Ihrer Python-Installation abgelegt.

Kopieren Sie danach einfach diesen Ordner in das Site-Packages-Verzeichnis Ihrer virtuellen Umgebung, und Sie werden keine Probleme haben.

Hier ist der Link, über den Sie die ausführbare Datei zur Installation von psycopg2 finden

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

Chris Hawkes
quelle
Ich habe es versucht und ich bekomme psycopg2-2.6-cp34-none-win_amd64.whl ist kein unterstütztes Rad auf dieser Plattform.
Jayeshkv
1

Unter OpenSUSE 13.2 wurde Folgendes behoben:

sudo zypper in postgresql-devel 
Elliott
quelle
1

Ich könnte es auf einem Windows-Computer installieren und Anaconda / Spyder mit Python 2.7 über die folgenden Befehle verwenden:

 !pip install psycopg2

So stellen Sie die Verbindung zur Datenbank her:

 import psycopg2
 conn = psycopg2.connect(dbname='dbname',host='host_name',port='port_number', user='user_name', password='password')
Cristian Muñoz
quelle
Ich habe dies mit Datenbank in psql -l, Host localhost, Standard-Datenbank-Port 5432, Benutzer aufgelistet, \dusobald Sie in psql kommen und das Passwort erraten.
Harry Moreno
1

In Arch- Basisverteilungen:

sudo pacman -S python-psycopg2
pip2 install psycopg2  # Use pip or pip3 to python3
iraj jelodari
quelle
0

Unter Ubuntu brauchte ich nur das Postgres-Entwicklungspaket:

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

* In einer virtuellen Umgebung getestet

marcanuy
quelle
0

Unter OSX 10.11.6 (El Capitan)

brew install postgresql
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2
iNoob
quelle
Unter OSX 10.12.3 (Sierra):brew install postgresql PATH=$PATH:/usr/local/Cellar/postgresql/9.6.2/bin/ pip install psycopg2
ishandutta2007
Unter OS X 10.14 war dies eine große Herausforderung. Siehe detaillierte Lösung hier: stackoverflow.com/a/57014480/2162844
Bisonbleu
0

Unter OSX mit Macports:

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

Ich hatte dieses Problem, der Hauptgrund war, dass 2 gleiche Versionen installiert waren. Eine von postgres.app und eine von HomeBrew.

Wenn Sie nur die APP behalten möchten:

brew unlink postgresql
pip3 install psycopg2
Luís De Marchi
quelle
0

Stellen Sie unter macOS Mojave sicher, dass Sie das neueste Update mit Command Line Tools 10.3 - das bei mir funktioniert hat - mit Software Update aktualisiert haben. Die vorherige Version von Command Line Tools unter Mojave hat bei mir nicht funktioniert.

Radek
quelle
-1

Versuchen Sie dies in Gentoo:

emerge dev-libs/libpqxx
tokhi
quelle
-2

Unter Windows funktioniert dies wie folgt
: Führen Sie diesen Befehl an der Eingabeaufforderung nach der Installation von flask via pip in einer virtuellen Umgebung aus

>pip install psycopg2

Überprüfen Sie dies

Tessaracter
quelle