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.

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

TilmanBaumann
quelle
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
Azalee
quelle
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

thegauraw
quelle
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".

Tayler
quelle
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
rkoval
quelle
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 :)

radtek
quelle
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
37
apt-get build-dep python-psycopg2
matiu
quelle
34

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

sudo apt-get install libpq-dev python-dev
Kishore Bhosale
quelle
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.

Ali Raza Bhayani
quelle
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

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

Unter Linux hat Mint sudo apt-get install libpq-devfür mich funktioniert.

Der Schöpfer
quelle
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.
Jakub
quelle
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
Mayank
quelle
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

Milo
quelle
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
Marboni
quelle
-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.

user2498172
quelle
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
Aswin
quelle
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

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

Morfat Mosoti
quelle
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

Dinesh Sunny
quelle
9

Die Installation von python-psycopg2 hat es für mich unter Arch Linux gelöst:

pacman -S python-psycopg2
Ronan Boiteau
quelle
Was ist mit Windows?
Prathamesh Mehr
2
@PrathameshMehr Ich weiß nicht, ich benutze kein Windows. Haben Sie diese Antwort versucht: stackoverflow.com/a/25767749/5660517 ?
Ronan Boiteau
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.

Subin Sebastian
quelle
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

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

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

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

Uzzi Emuchay
quelle
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 .
TomNg
quelle
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
BogdanSorlea
quelle
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

Hedde van der Heide
quelle