Nie znaleziono pliku wykonywalnego pg_config


768

Mam problem z instalacją psycopg2. Podczas próby pip install psycopg2: pojawia się następujący błąd :

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

Ale problem tkwi pg_configw moim PATH; działa bez problemu:

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

Próbowałem dodać ścieżkę pg_config do setup.cfgpliku i zbudować ją przy użyciu plików źródłowych pobranych z ich strony internetowej ( http://initd.org/psycopg/ ) i otrzymuję następujący komunikat o błędzie!

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

Ale tak naprawdę jest TAM !!!

Niepokoją mnie te błędy. Czy ktoś może pomóc?

Nawiasem mówiąc, mam sudowszystkie polecenia. Też jestem na RHEL 5.5.


8
Po uruchomieniu polecenia jako sudo, $PATHulega zmianie. Czy możesz dokładnie sprawdzić swoją $ PATH jako root?
Hugo Tavares

1
W moim przypadku biegam ln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_configi wszystko jest w porządku!
CK.Nguyen

Dzięki @ CK.Nguyen Twoja wskazówka naprawdę dla mnie zadziałała.
pratibha

Odpowiedzi:


762

pg_configjest w postgresql-devel( libpq-devw Debian / Ubuntu, libpq-develna Centos / Cygwin / Babun.)


66
Rozwiązany po instalacji libpq-devna ubuntu lucid (10.04). Z góry dziękuję.
pylover

22
pg_configPostgress.app znajduje się w /Applications/Postgres.app/Contents/Versions/<your version>/bin(Mac OS X)
Tim Daubenschütz

17
To jest libpqxx-develna fedorze.
robsn

54
sudo apt-get install libpq-devpracował dla mnie na Ubuntu
Bill Cheatham

48
w systemie Alpine Linux: apk dodaj postgresql-dev
RJ

384

W systemie Mac OS X rozwiązałem go za pomocą menedżera pakietów homebrew

brew install postgresql

29
Świetny! Dla mnie to rozwiązało problem, ale początkujący powinni mieć świadomość, że najpierw musisz zainstalować menedżera pakietów Homebrew , aby brewpolecenie działało.
seane

Pracowałem również dla mnie, mimo że zainstalowałem parzenie po instalacji pgadmin.
Khanal

8
Czy to nie instaluje całej bazy danych?
zmbq

3
Potrzebuję ekstrabrew link postgresql
vincentlcy

1
Aby dodać do komentarza @ seane, skorzystaj z tego przewodnika, aby zainstalować homebrew.
Bruce Wayne,

235

Czy zainstalowałeś python-dev? Jeśli już masz, spróbuj także zainstalowaćlibpq-dev

sudo apt-get install libpq-dev python-dev

Z artykułu: Jak zainstalować psycopg2 w virtualenv


Na moim komputerze instaluję tylko klienta Postgresql, więc musisz zainstalować libpq-dev i python-dev.
bnPYSse

2
Wątpliwe, że potrzebny jest program python-dev.
juanitogan

pomogło mi. Dzięki
Arun

4
potrzebny jest python3-dev. Bez tego dostajęPython.h: No such file or directory
krubo

1
wymagana jest jeszcze jedna zależnośćapt-get install -y gcc
Anum Sheraz

74

Również w OSX. Zainstalowałem Postgress.app z http://postgresapp.com/, ale miał ten sam problem.

Znalazłem pg_configw zawartości tej aplikacji i dodałem katalog do$PATH .

To było o godz /Applications/Postgres.app/Contents/Versions/latest/bin. Tak to działa: export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH".


3
@GianlucaLodigiani możesz to zrobić również, jeśli nie chcesz ponownie uruchamiać konsoliPATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2
Bernardo Duarte


38

Oto, co działało dla mnie na CentOS, pierwsza instalacja:

sudo yum install postgresql postgresql-devel python-devel

Na Ubuntu wystarczy użyć ekwiwalentnych pakietów apt-get.

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

A teraz dołącz ścieżkę do binarnego katalogu postgresql przy instalacji pipem, powinno to działać w systemie Linux opartym na Debain lub RHEL:

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

Upewnij się, że podałeś prawidłową ścieżkę. To wszystko :)


1
Na Ubuntu jest to sudo apt-get install postgresql postgresql-dev python-devi działało dla mnie.
modulitos

2
działa również na Amazon Linux AMI od grudnia 2016 r. Upewnij się także, że gccjest zainstalowany i python3-devel.
villasv

Dziękuję Ci!!! Działa również na stacji roboczej Fedora 32!
Marcelo Gazzola


34

Powinieneś dodać wymagania Pythona używane w Postgres na Ubuntu. Biegać:

sudo apt-get install libpq-dev python-dev

32

Podsumowując, napotkałem dokładnie ten sam problem. Po przeczytaniu dużej liczby postów i blogów internetowych, ostateczne rozwiązanie, które zadziałało dla mnie, to:

1) PostgreSQL (programista lub dowolna stabilna wersja) powinien zostać zainstalowany przed instalacją psycopg2.

2) Plik pg_config (ten plik zwykle znajduje się w folderze bin folderu instalacyjnego PostgreSQL) PATH musiał zostać jawnie skonfigurowany przed zainstalowaniem psycopg2. W moim przypadku PATH instalacji dla PostgreSQL to:

/opt/local/lib/postgresql91/

więc aby jawnie ustawić PATH pliku pg_config, wprowadziłem następujące polecenie w moim terminalu:

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

To polecenie zapewnia, że ​​podczas próby instalacji programu psycopg2 w trybie pip, PATH automatycznie znajdzie tym razem ścieżkę do pg_config.

Na moim blogu opublikowałem również pełny błąd dotyczący śledzenia i jego rozwiązania, do którego możesz polecić. Działa w systemie Mac OS X, ale problem PATH pg_config jest ogólny i dotyczy także Linuksa.


6
dla mnie w OS X ścieżka wyglądała takPATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
andilabs,

@andi Tak, ścieżka instalacji Postgres może się różnić, ale przepis na psycopg2, o którym wspomniałem powyżej, pozostaje taki sam. Mam nadzieję, że to pomogło.
Ali Raza Bhayani,

30

sudo apt-get install libpq-dev działa dla mnie na Ubuntu 15.4


Jeśli używasz nowszego systemu Ubuntu, nadal korzystaj ze wspomnianej instrukcji instalacji. Zobacz pg_config
palik


21

Możesz zainstalować wstępnie skompilowane pliki binarne na dowolnej platformie z piplub conda:

python -m pip install psycopg2-binary

lub

conda install psycopg2

Informujemy, że strona psycopg2-binary pypi zaleca budowanie ze źródła podczas produkcji:

Pakiet binarny jest praktycznym wyborem do programowania i testowania, ale podczas produkcji zaleca się korzystanie z pakietu zbudowanego ze źródeł

Aby użyć pakietu zbudowanego ze źródeł, użyj python -m pip install psycopg2. Ten proces będzie wymagał kilku zależności ( dokumentacji ) (moje wyróżnienie):

  • Kompilator prądu przemiennego .
  • W nagłówku plików Pythona . Zazwyczaj są instalowane w pakiecie takim jak python-dev . Komunikat taki jak błąd: Python.h: Brak takiego pliku lub katalogu wskazuje na brak nagłówków Python.
  • Te pliki nagłówkowe libpq . Zazwyczaj są instalowane w pakiecie takim jak libpq-dev . Jeśli pojawi się błąd: libpq-fe.h: Brakuje takiego pliku lub katalogu.
  • Program pg_config : zwykle jest instalowany przez pakiet libpq-dev , ale czasami nie znajduje się w katalogu PATH. Umieszczenie go w PATH znacznie usprawnia instalację, więc spróbuj uruchomić pg_config --version: jeśli zwróci błąd lub nieoczekiwany numer wersji, zlokalizuj katalog zawierający pg_config dostarczony z odpowiednią wersją libpq (zwykle / usr / lib / postgresql / XY / bin /) i dodaj go do ŚCIEŻKI: $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH Potrzebujesz tylko pg_config do skompilowania psycopg2, a nie do jego regularnego używania.

Na Ubuntu najpierw musiałem zainstalować bibliotekę libpq-dev, a następnie ponownie uruchomić polecenie pip install:apt install libpq-dev
Benjamin

20

AKTUALIZACJA /etc/yum.repos.d/CentOS-Base.repo, [baza] i [aktualizacje] sekcje
DODAJ wyklucz = 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

Dla osób z systemem OS X to rozwiązanie działało dla mnie:

1) Zainstaluj Postgres.app:

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

2) Następnie otwórz terminal i uruchom tę komendę, zastępując tam, gdzie jest napisane {{wersja}} numerem wersji Postgres:

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

na przykład

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


Lub dowiązanie symboliczne do najnowszej wersjisudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Subin Sebastian

17

Spróbuj dodać go do ŚCIEŻKI:

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

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

@pylover, musisz użyć poprawnej ścieżki do katalogu bin Postgres. Jesteś pewien, że /usr/pgsql-x.x/bin/to prawda?
Marboni

Wystarczy również dodać folder, w którym znajdują się wszystkie ważne pg_pliki. W przypadku postgres.app ta ścieżka w systemie Mac OS X to /Applications/Postgres.app/Contents/Versions/9.3/bin. PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin Zaktualizuj swoją wersję *, jeśli nowa wersja została wydana!
Tim Daubenschütz

Działa to dla mnie w OS X El Capitan:PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
David Hariri,

16

Rozwiązanie Ali działało dla mnie, ale miałem problem ze znalezieniem lokalizacji folderu bin. Szybkim sposobem na znalezienie ścieżki w systemie Mac OS X jest otwarcie psql (na górnym pasku menu znajduje się szybki link). Otworzy się osobne okno terminala, aw drugim wierszu ścieżka instalacji Postgres będzie wyglądać tak:

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

Twój plik pg_config znajduje się w tym folderze bin. Dlatego przed instalacją psycopg2 ustaw ścieżkę do pliku pg_config:

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

lub dla nowszej wersji:

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

Następnie zainstaluj psycopg2.


1
Nowsze dokumenty używają następującej ścieżki:/Applications/Postgres.app/Contents/Versions/9.3/bin
jpimentel

Wydaje się, że się porusza. find /usr/local -name 'pg_config'
Praxeolitic

11

Musisz zaktualizować swój pip przed instalacją psycopg2. Użyj tego polecenia

pip install --upgrade pip

Bardziej szczegółowa odpowiedź może być pomocna w większości przypadków.
bkausbk

11

Zostawię to tutaj następnej niefortunnej duszy, która nie będzie w stanie obejść tego problemu pomimo wszystkich dostarczonych rozwiązań. Po prostu użyjsudo pip3 install psycopg2-binary


To nie działało dla mnie. Tylko brew install postgresqlto naprawiłem.
Tsando

Być może będziesz musiał pip install psycopg2-binary: pip -> python2, pip3 -> python3. Ale dopóki działało, było to jedno z wielu rozwiązań!
DuDoff,

9

Właśnie rozwiązałem problem w Cent OS 7 przez:

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

upewnij się, że twoja wersja PostgreSql jest zgodna z odpowiednią wersją powyżej.


9

W systemie Mac OS X i jeśli korzystasz z aplikacji Postgres ( http://postgresapp.com/ ):

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

W tym poleceniu nie ma potrzeby określania wersji Postgres. Zawsze będzie wskazywany na najnowszy.

i robić

pip install psycopg2

PS: Jeśli zmiany nie odzwierciedlają, może być konieczne ponowne uruchomienie wiersza polecenia / polecenia

Źródło




8

W systemie MacOS najprostszym rozwiązaniem będzie dowiązanie symboliczne poprawnego pliku binarnego, czyli pakietu Postgres.

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

Jest to dość nieszkodliwe, a wszystkie aplikacje będą mogły w razie potrzeby korzystać z niego w całym systemie.


Działa dla mnie, nie musiałem jednak sudo. Dziękuję Ci!
John Ottenlips,

Rzeczywiście działa dla mnie!
Hadnazzar


5

Tutaj, dla kompletności OS X: jeśli zainstalujesz PostgreSQL z MacPorts, pg_config będzie w /opt/local/lib/postgresql94/bin/pg_config.

Po zainstalowaniu MacPorts, został już dodany /opt/local/bindo ŚCIEŻKI.

To rozwiąże problem: $ sudo ln -s /opt/local/lib/postgresql94/bin/pg_config /opt/local/bin/pg_config

Teraz pip install psycopg2będzie można uruchomić pg_configbez problemów.


4

Dla użytkowników MacOS Catalina korzystających z zshpowłoki, którzy również zainstalowali aplikację postgres :

Otwórz ~/.zshrcplik i dodaj następujący wiersz:

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

Następnie zamknij wszystkie terminale, otwórz je ponownie, a rozwiążesz problem.

Jeśli nie chcesz zamykać terminali, po prostu wpisz source ~/.zshrcdowolny terminal, nad którym chcesz kontynuować pracę.


To działało dla mnie na Macos i zshshell!
Aditya Rao

4

W przypadku użytkowników komputerów Mac rozszerz zmienną ścieżki, aby zawierała PostgreSQL w ten sposób export PATH=$PATH:/Library/PostgreSQL/12/bin.


3

W ten sposób udało mi się zainstalować psycopg2

$ 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

Jestem prawie pewien, że doświadczyłeś tego samego „problemu”, co ja, dlatego zaoferuję ci niezwykle łatwe rozwiązanie ...

W twoim przypadku rzeczywista ścieżka, którą musisz dodać do $ PATH (lub jako parametr polecenia) to:

/usr/pgsql-9.1/bin/pg_config

nie

/usr/pgsql-9.1/bin

Na przykład, jeśli później uruchomisz skrypt setup.py python, uruchomisz go w następujący sposób:

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

Prawdopodobnie za późno, ale wciąż najłatwiejsze rozwiązanie.

PÓŹNA EDYCJA:

Podczas dalszych testów dowiedziałem się, że jeśli początkowo dodasz ścieżkę do pg_config w formularzu

/usr/pgsql-9.1/bin

(bez / pg_config po ..... / bin) i uruchom polecenie pip install, to zadziała.

Jeśli jednak zdecydujesz się postępować zgodnie ze wskazówkami, aby uruchomić plik setup.py w Pythonie, będziesz musiał określić ścieżkę za pomocą / pg_config po ..... / bin, tj.

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

Alternatywą dla dodania katalogu pgsql / bin do PATH, którego używałem dość często, jest dowiązanie symboliczne /usr/pgsql-9.6/bin/pg_config(lub jakkolwiek to się nazywa w twoim systemie) /usr/bin/pg_config- w ten sposób jest ono dostępne w PATH, którą już masz.
Ralph Bolton

2

dla CentOS / RedHat upewnij się, że /etc/alternatives/pgsql-pg_configjest to nieprzerwane dowiązanie symboliczne

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.