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 ...

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


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.


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


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


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

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.


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


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.


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.


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

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.


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


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 ...


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

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.


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.)


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

2

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

apt-get install libpq-dev

Dann:

pip install psycopg2

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/


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 

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')

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


0

Unter Ubuntu brauchte ich nur das Postgres-Entwicklungspaket:

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

* In einer virtuellen Umgebung getestet


0

Unter OSX 10.11.6 (El Capitan)

brew install postgresql
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2

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

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

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.


-1

Versuchen Sie dies in Gentoo:

emerge dev-libs/libpqxx

-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

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.