Die ausführbare Datei pg_config wurde nicht gefunden


769

Ich habe Probleme bei der Installation von psycopg2. Ich erhalte die folgende Fehlermeldung, wenn ich es versuche pip install psycopg2:

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 in /tmp/pip-build/psycopg2

Aber das Problem pg_configliegt tatsächlich in meinem PATH; es läuft ohne probleme:

$ which pg_config
/usr/pgsql-9.1/bin/pg_config

Ich habe versucht, den Pfad pg_config zur setup.cfgDatei hinzuzufügen und ihn mit den Quelldateien zu erstellen, die ich von der Website ( http://initd.org/psycopg/ ) heruntergeladen habe, und erhalte die folgende Fehlermeldung!

Error: Unable to find 'pg_config' file in '/usr/pgsql-9.1/bin/'

Aber es ist tatsächlich da !!!

Ich bin verblüfft über diese Fehler. Kann mir bitte jemand helfen?

Übrigens habe ich sudoalle Befehle. Auch ich bin auf RHEL 5.5.


8
Wenn Sie Befehle als ausführen sudo, $PATHwird geändert. Können Sie bitte Ihren $ PATH als root überprüfen?
Hugo Tavares

1
In meinem Fall ln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_configrenne ich und alles in Ordnung!
CK.Nguyen

Danke @ CK.Nguyen, dein Tipp hat wirklich für mich funktioniert.
Pratibha

Antworten:


764

pg_configist in postgresql-devel( libpq-devin Debian / Ubuntu, libpq-develauf Centos / Cygwin / Babun.)


66
Gelöst nach der Installation libpq-devauf Ubuntu Lucid (10.04). Vielen Dank im Voraus.
Pylover

22
pg_configvon postgress.app ist bei /Applications/Postgres.app/Contents/Versions/<your version>/bin(Mac OS X)
Tim Daubenschütz

17
Es ist libpqxx-develauf Fedora.
Robsn

55
sudo apt-get install libpq-devarbeitete für mich auf Ubuntu
Bill Cheatham

48
unter Alpine Linux: apk add postgresql-dev
RJ

385

Unter Mac OS X habe ich es mit dem Homebrew- Paketmanager gelöst

brew install postgresql

29
Ausgezeichnet! Dies löste das Problem für mich, aber Neulinge sollten sich bewusst sein, dass Sie zuerst den Homebrew- Paketmanager installieren müssen, damit der brewBefehl funktioniert.
Seane

Hat auch für mich funktioniert, obwohl ich die Brew-Installation nach der pgadmin-Installation durchgeführt habe.
Khanal

8
Installiert das nicht die gesamte Datenbank?
Zmbq

3
Ich brauche die extrabrew link postgresql
vincentlcy

1
Verwenden Sie diese exemplarische Vorgehensweise zum Installieren, um den Kommentar von @ seane hinzuzufügen homebrew.
Bruce Wayne

236

Hast du installiert python-dev? Wenn Sie bereits haben, versuchen Sie auch zu installierenlibpq-dev

sudo apt-get install libpq-dev python-dev

Aus dem Artikel: So installieren Sie psycopg2 unter virtualenv


Auf meinem Computer installiere ich nur den Client von Postgresql, sodass Sie libpq-dev und python-dev installieren müssen.
bnPYSse

2
Zweifelhaft, dass Python-Dev benötigt wird.
Juanitogan

es hat mir geholfen. Danke
Arun

4
python3-dev wird benötigt. Ohne es bekomme ichPython.h: No such file or directory
krubo

1
Eine weitere Abhängigkeit, die dafür erforderlich ist, istapt-get install -y gcc
Anum Sheraz

74

Auch unter OSX. Installierte Postgress.app von http://postgresapp.com/ , hatte aber das gleiche Problem.

Ich fand pg_configin den Inhalten dieser App und fügte das Verzeichnis hinzu $PATH.

Es war um /Applications/Postgres.app/Contents/Versions/latest/bin. Das hat also funktioniert : export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH".


3
@ GianlucaLodigiani Sie können dies auch tun, wenn Sie die Konsole nicht neu starten möchtenPATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2
Bernardo Duarte

45

Am Alpen, die Bibliothek enthält pg_configist postgresql-dev. Führen Sie zum Installieren Folgendes aus:

apk add postgresql-dev

38

Dies hat bei CentOS bei mir funktioniert. Zuerst installieren:

sudo yum install postgresql postgresql-devel python-devel

Verwenden Sie unter Ubuntu einfach die entsprechenden apt-get-Pakete.

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

Fügen Sie jetzt den Pfad zu Ihrem postgresql-Binärverzeichnis bei Ihrer Pip-Installation hinzu. Dies sollte entweder für Debain- oder RHEL-basiertes Linux funktionieren:

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

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


1
Unter Ubuntu ist es das sudo apt-get install postgresql postgresql-dev python-dev, und das hat bei mir funktioniert.
Modulitos

2
funktioniert ab Dezember 2016 auch unter Amazon Linux AMI. gccStellen Sie außerdem sicher, dass python3-devel installiert ist.
Villasv

Vielen Dank!!! Es funktionierte auch auf der Fedora 32 Workstation!
Marcelo Gazzola


34

Sie sollten Python-Anforderungen hinzufügen, die in Postgres unter Ubuntu verwendet werden. Lauf:

sudo apt-get install libpq-dev python-dev

32

Um es zusammenzufassen, ich hatte auch genau das gleiche Problem. Nachdem ich viele Stackoverflow-Beiträge und Online-Blogs gelesen habe, war die endgültige Lösung, die für mich funktioniert hat, folgende:

1) PostgreSQL (Entwicklung oder eine stabile Version) sollte vor der Installation von psycopg2 installiert werden.

2) Die Datei pg_config (diese Datei befindet sich normalerweise im Ordner bin des PostgreSQL-Installationsordners) PATH musste vor der Installation von psycopg2 explizit eingerichtet werden. In meinem Fall lautet der Installationspfad für PostgreSQL:

/opt/local/lib/postgresql91/

Um den Pfad der Datei pg_config explizit festzulegen, habe ich den folgenden Befehl in mein Terminal eingegeben:

PATH=$PATH:/opt/local/lib/postgresql91/bin/

Dieser Befehl stellt sicher, dass beim Versuch, psycopg2 per Pip zu installieren, der Pfad zu pg_config diesmal automatisch gefunden wird.

Ich habe auch einen vollständigen Fehler mit trace und seiner Lösung in meinem Blog veröffentlicht, auf den Sie möglicherweise verweisen möchten. Es ist für Mac OS X, aber das PATH-Problem pg_config ist generisch und gilt auch für Linux.


6
Für mich unter OS X sah der Pfad so ausPATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
andilabs

@andi Ja, der Installationspfad von Postgres kann unterschiedlich sein, aber das oben erwähnte Installationsrezept für psycopg2 bleibt das gleiche. Hoffe es hat geholfen.
Ali Raza Bhayani

30

sudo apt-get install libpq-dev funktioniert für mich unter Ubuntu 15.4


Wenn Sie ein neueres Ubuntu verwenden, verwenden Sie weiterhin die oben genannten Installationsanweisungen. Siehe pg_config
palik


21

Sie können vorkompilierte Binärdateien auf jeder Plattform installieren mit pipoder conda:

python -m pip install psycopg2-binary

oder

conda install psycopg2

Bitte beachten Sie, dass auf der psycopg2-binären Pypi-Seite empfohlen wird, in der Produktion aus dem Quellcode zu erstellen :

Das Binärpaket ist eine praktische Wahl für die Entwicklung und das Testen. In der Produktion wird jedoch empfohlen, das aus Quellen erstellte Paket zu verwenden

Verwenden Sie, um das aus Quellen erstellte Paket zu verwenden python -m pip install psycopg2. Dieser Prozess erfordert mehrere Abhängigkeiten ( Dokumentation ) (Schwerpunkt Mine):

  • AC-Compiler .
  • Die Python-Header-Dateien . Sie werden normalerweise in einem Paket wie python-dev installiert . Eine Meldung wie Fehler: Python.h: Keine solche Datei oder kein solches Verzeichnis weist darauf hin, dass die Python-Header fehlen.
  • Die libpq-Header-Dateien . Sie werden normalerweise in einem Paket wie libpq-dev installiert . Wenn Sie eine Fehlermeldung erhalten: libpq-fe.h: Keine solche Datei oder kein solches Verzeichnis, Sie vermissen sie.
  • Das Programm pg_config : Es wird normalerweise vom libpq-dev- Paket installiert , befindet sich jedoch manchmal nicht in einem PATH-Verzeichnis. Wenn es im PATH enthalten ist, wird die Installation erheblich vereinfacht. Versuchen Sie daher, pg_config --version auszuführen: Wenn ein Fehler oder eine unerwartete Versionsnummer zurückgegeben wird, suchen Sie das Verzeichnis mit der pg_config, die mit der richtigen libpq-Version geliefert wird (normalerweise / usr / lib / postgresql / XY / bin /) und füge es dem $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH PFAD hinzu : Du brauchst nur pg_config, um psycopg2 zu kompilieren, nicht für die reguläre Verwendung.

Unter Ubuntu musste ich zuerst die libpq-dev-Bibliothek installieren und dann den Befehl pip install erneut ausführen:apt install libpq-dev
Benjamin

20

UPDATE /etc/yum.repos.d/CentOS-Base.repo, Abschnitte [base] und [updates]
ADD exclude = postgresql *

curl -O http://yum.postgresql.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpmr  
rpm -ivh pgdg-centos91-9.1-4.noarch.rpm

yum install postgresql  
yum install postgresql-devel

PATH=$PATH:/usr/pgsql-9.1/bin/

pip install psycopg2

20

Für diejenigen, die OS X ausführen, hat diese Lösung für mich funktioniert:

1) Installieren Sie Postgres.app:

http://www.postgresql.org/download/macosx/

2) Öffnen Sie dann das Terminal und führen Sie diesen Befehl aus. Ersetzen Sie dabei {{version}} durch die Postgres-Versionsnummer:

export PATH = $ PATH: /Applications/Postgres.app/Contents/Versions / {{version}} / bin

z.B

export PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.4/bin


Oder verknüpfen Sie es mit der neuesten Versionsudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Subin Sebastian

17

Versuchen Sie es zu PATH hinzuzufügen:

PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2

-bash: cd: /usr/pgsql-x.x/bin/: No such file or directory
Pylover

@pylover, Sie müssen den richtigen Pfad zu Ihrem Postgres bin-Verzeichnis verwenden. Bist du sicher, dass /usr/pgsql-x.x/bin/das richtig ist?
Marboni

Es würde auch ausreichen, nur den Ordner hinzuzufügen, in dem sich alle wichtigen pg_Dateien befinden. Für postgres.app dieser Pfad auf Mac OS X ist /Applications/Postgres.app/Contents/Versions/9.3/bin. PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin Bitte aktualisieren Sie Ihre Version *, wenn eine neue Version veröffentlicht wurde!
Tim Daubenschütz

Dies funktionierte für mich unter OS X El Capitan:PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
David Hariri

16

Alis Lösung hat bei mir funktioniert, aber ich hatte Probleme, den Speicherort des Bin-Ordners zu finden. Ein schneller Weg, um den Pfad unter Mac OS X zu finden, ist das Öffnen von psql (es gibt einen Schnelllink in der oberen Menüleiste). Dadurch wird ein separates Terminalfenster geöffnet und in der zweiten Zeile wird der Pfad Ihrer Postgres-Installation folgendermaßen angezeigt:

My-MacBook-Pro:~ Me$ /Applications/Postgres93.app/Contents/MacOS/bin/psql ; exit;

Ihre pg_config-Datei befindet sich in diesem bin-Ordner. Legen Sie daher vor der Installation von psycopg2 den Pfad der Datei pg_config fest:

PATH=$PATH:/Applications/Postgres93.app/Contents/MacOS/bin/

oder für neuere Version:

PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin

Dann installieren Sie psycopg2.


1
Neuere Dokumente verwenden den folgenden Pfad:/Applications/Postgres.app/Contents/Versions/9.3/bin
Jpimentel

Es scheint sich zu bewegen. find /usr/local -name 'pg_config'
Praxeolitic

11

Sie müssen Ihren Pip aktualisieren, bevor Sie psycopg2 installieren. Verwenden Sie diesen Befehl

pip install --upgrade pip

Eine detailliertere Antwort könnte in den meisten Fällen hilfreich sein.
Bkausbk

11

Ich werde dies hier für die nächste unglückliche Seele belassen, die dieses Problem trotz aller bereitgestellten Lösungen nicht umgehen kann. Einfach benutzensudo pip3 install psycopg2-binary


Das hat bei mir nicht funktioniert. Nur brew install postgresqlbehoben.
Tsando

Möglicherweise müssen Sie pip install psycopg2-binaryfür mich: pip -> python2, pip3 -> python3. Aber solange es funktioniert hat, war es eine von vielen Lösungen!
DuDoff

9

Gerade das Problem in Cent OS 7 gelöst durch:

export PATH=$PATH:/usr/pgsql-9.5/bin

Stellen Sie sicher, dass Ihre PostgreSql-Version mit der richtigen Version oben übereinstimmt.


9

Unter Mac OS X und Wenn Sie die Postgres-App verwenden ( http://postgresapp.com/ ):

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

In diesem Befehl muss keine Postgres-Version angegeben werden. Es wird immer auf das Neueste hingewiesen.

und TU

pip install psycopg2

PS: Wenn Änderungen nicht berücksichtigt werden, müssen Sie möglicherweise die Terminal- / Eingabeaufforderung neu starten

Quelle




8

Unter MacOS besteht die einfachste Lösung darin, die richtige Binärdatei zu verknüpfen, die sich unter dem Postgres-Paket befindet.

sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config

Dies ist ziemlich harmlos, und alle Anwendungen können es bei Bedarf systemweit verwenden.


Funktioniert für mich, musste aber nicht sudo. Vielen Dank!
John Ottenlips

Funktioniert in der Tat für mich!
Hadnazzar

5

sudo yum install postgresql-devel (centos6X)

pip install psycopg2 == 2.5.2


5

Der Vollständigkeit halber hier: Wenn Sie PostgreSQL von MacPorts installieren, befindet sich pg_config in /opt/local/lib/postgresql94/bin/pg_config.

Wenn Sie MacPorts installiert haben, wurde es bereits /opt/local/binzu Ihrem PATH hinzugefügt .

Damit ist das Problem behoben: $ sudo ln -s /opt/local/lib/postgresql94/bin/pg_config /opt/local/bin/pg_config

Jetzt pip install psycopg2kann pg_configohne Probleme ausgeführt werden.


4

Für diejenigen unter macOS Catalina, die die zshShell verwenden und auch die postgres-App installiert haben :

Öffnen Sie Ihre ~/.zshrcDatei und fügen Sie die folgende Zeile hinzu:

export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

Schließen Sie dann alle Terminals, öffnen Sie sie erneut, und Sie haben Ihr Problem behoben.

Wenn Sie Ihre Terminals nicht schließen möchten, geben Sie einfach das source ~/.zshrcTerminal ein, an dem Sie weiterarbeiten möchten .


Das hat bei mir auf Macos und zshShell funktioniert !
Aditya Rao

4

Erweitern Sie für Mac-Benutzer Ihre Pfadvariable um PostgreSQL wie folgt export PATH=$PATH:/Library/PostgreSQL/12/bin.


3

So habe ich es geschafft, psycopg2 zu installieren

$ wget http://initd.org/psycopg/tarballs/PSYCOPG-2-5/psycopg2-2.5.3.tar.gz
$ tar -xzf psycopg2-2.5.3.tar.gz
$ cd psycopg2-2.5.3
$ pip install .

2

Ich bin mir ziemlich sicher, dass Sie das gleiche "Problem" hatten, das ich hatte, deshalb biete ich Ihnen die extrem einfache Lösung an ...

In Ihrem Fall lautet der tatsächliche Pfad, den Sie zu $ ​​PATH (oder als Befehlsparameter) hinzufügen müssen:

/usr/pgsql-9.1/bin/pg_config

nicht

/usr/pgsql-9.1/bin

Wenn Sie beispielsweise das Skript python setup.py anschließend ausführen, führen Sie es folgendermaßen aus:

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build

Wahrscheinlich zu spät, aber immer noch die einfachste Lösung.

SPÄTER BEARBEITEN:

Bei weiteren Tests stellte ich fest, dass, wenn Sie den Pfad zu pg_config anfänglich im Formular hinzufügen

/usr/pgsql-9.1/bin

(ohne / pg_config nach ..... / bin) und führen Sie den Befehl pip install aus, es wird funktionieren.

Wenn Sie sich dann jedoch entschließen, der Angabe zum Ausführen von python setup.py zu folgen, müssen Sie den Pfad mit / pg_config nach ..... / bin angeben, d. H.

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build

Eine Alternative zum Hinzufügen des Verzeichnisses pgsql / bin zu dem Pfad, den ich ein gutes Stück verwendet habe, besteht darin, einen Symlink /usr/pgsql-9.6/bin/pg_config(oder wie auch immer er auf Ihrem System heißt) zu erstellen /usr/bin/pg_config- auf diese Weise ist er in dem Pfad verfügbar, den Sie bereits haben.
Ralph Bolton

2

Stellen Sie für CentOS / RedHat sicher, dass /etc/alternatives/pgsql-pg_configes sich um einen nicht unterbrochenen Symlink handelt

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.