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.

użytkownik1448207
źródło
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.)

Tilman Baumann
źródło
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
azalia
źródło
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

thegauraw
źródło
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".

Tayler
źródło
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
45

W alpine biblioteka zawierająca pg_configto postgresql-dev. Aby zainstalować, uruchom:

apk add postgresql-dev
rkoval
źródło
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 :)

radtek
źródło
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
37
apt-get build-dep python-psycopg2
matiu
źródło
34

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

sudo apt-get install libpq-dev python-dev
Kishore Bhosale
źródło
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.

Ali Raza Bhayani
źródło
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

novasaint
źródło
Jeśli używasz nowszego systemu Ubuntu, nadal korzystaj ze wspomnianej instrukcji instalacji. Zobacz pg_config
palik
23

W Linuksie Mint sudo apt-get install libpq-devdziałał dla mnie.

mthecreator
źródło
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.
Kuba
źródło
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
Mayank
źródło
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

Milo
źródło
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
Marboni
źródło
-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.

użytkownik2498172
źródło
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
Aswin
źródło
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

DuDoff
źródło
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.

Morfat Mosoti
źródło
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

Dinesh Sunny
źródło
9

Instalowanie python-psycopg2 rozwiązało to dla mnie w Arch Linux:

pacman -S python-psycopg2
Ronan Boiteau
źródło
Co z Windows?
Prathamesh More
2
@PrathameshWięcej Nie wiem, nie używam systemu Windows. Próbowałeś już tej odpowiedzi: stackoverflow.com/a/25767749/5660517 ?
Ronan Boiteau,
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.

Subin Sebastian
źródło
Działa dla mnie, nie musiałem jednak sudo. Dziękuję Ci!
John Ottenlips,
Rzeczywiście działa dla mnie!
Hadnazzar
5

sudo mniam zainstaluj postgresql-devel (centos6X)

pip install psycopg2 == 2.5.2

użytkownik2387567
źródło
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.

Gabi
źródło
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ę.

qarthandso
źródło
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.

Uzzi Emuchay
źródło
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 .
TomNg
źródło
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
BogdanSorlea
źródło
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

Hedde van der Heide
źródło