Próbowałem zainstalować postgres dla samouczka, ale pip
wyświetla mi się błąd:
pip install psycopg
Fragment błędu, który otrzymuję:
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'.
Gdzie jest pg_config
mój virtualenv? Jak to skonfigurować? Używam virtualenv, ponieważ nie chcę instalacji postgres w całym systemie.
Odpowiedzi:
Na komputerze Mac, jeśli używasz Postgres.app , plik pg_config znajduje się w twoim
/Applications/Postgres.app/Contents/Versions/<current_version>/bin
katalogu. Będzie trzeba to dodać do ścieżki systemowej, aby naprawić ten błąd, na przykład:export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/<current_version>/bin
Na przykład, jeśli aktualna wersja Postgres.app to 9.5, ten wiersz eksportu będzie wyglądał tak:
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.5/bin
W nowszych wersjach Postgres.app (> 9.5?) Możesz po prostu dodać „najnowszą” zamiast numeru wersji, na przykład:
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
źródło
9.4
.bash_profile
jeśli używasz standardowego bash Terminala. JEŚLI używasz,zsh
dołącz tę linię do.zshrc
pliku. Wszystko to znajdziesz w swoim katalogu domowym. (po prostuls -la
)<current_version>
zlatest
których punkty do najnowszej zainstalowanej wersji PostgreSQL. Mój folder wygląda tak:ls /Applications/Postgres.app/Contents/Versions/
i daje9.5/ latest/
Na Macu rozwiązaniem jest zainstalowanie
postgresql
:brew install postgresql
W CentOS rozwiązaniem jest instalacja
postgresql-devel
:sudo yum install postgresql-devel
pg_config
jest wpostgresql-devel
opakowaniuźródło
Całkowicie zgadzam się z Johnem Hightem, że większość opublikowanych odpowiedzi jest całkowicie offtopic, przy założeniu, że OP ma dokładnie określoną potrzebę użycia virtualenv .
Dla mnie odpowiedzią było uruchomienie następującego polecenia w wierszu polecenia podczas aktywacji virtualenv:
export PATH="/Applications/Postgres.app/Contents/Versions/9.4/bin:$PATH"
(zauważ, że część 9.4 oznacza wersję i może się różnić)
lub jeśli chcesz korzystać z najnowszej zainstalowanej wersji Postgres:
export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"
i wtedy:
pip install psycopg2
idzie pomyślnie, zakładając, że zainstalowałeś postgres. A jeśli nie, to pamiętaj, że najlepszym i polecanym rozwiązaniem jest użycie: Postgres.app
źródło
export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"
jeśli chcesz korzystać z najnowszej zainstalowanej wersji PostgresNie zapominaj, że zmienna $ PATH w środowisku wirtualnym! = Twoja globalna zmienna $ PATH. Możesz to potwierdzić za pomocą 'echo $ PATH' w swoim virtualenv, a także w nowej powłoce. Tak więc, jeśli nie chcesz zainstalować PostgreSQL jako unikalnej instancji w swoim wirtualnym środowisku (nie jest to rzecz warta robienia, imo), będziesz musiał zmodyfikować zmienną $ PATH w virtualenv, aby uwzględnić ścieżkę do swojej globalnej instalacji (która Rozwiąż brakujący błąd pg_config).
Oto kroki:
1.) W nowej powłoce wpisz „which pg_config”. To zwróci ścieżkę. Skopiuj to. W moim przypadku ścieżka wyglądała tak: /Applications/Postgres.app/Contents/Versions/9.3/bin
2.) Z powrotem w powłoce virtualenv wpisz „export PATH = / twoja-ścieżka-do-pg_config: $ PATH”
3.) Następnie, nadal w virtualenv, „pip install psycopg2”
Jeśli wszystko pójdzie zgodnie z planem, spowoduje to zainstalowanie psycopg2 w środowisku wirtualnym, ale instalacja będzie się odnosić do instalacji Global PostgreSQL. W moim przypadku ta globalna instalacja została zainstalowana przez Postgres.App, stąd ścieżka. Wolę tę metodę pracy z psycopg2, ponieważ oznacza to, że mogę łatwo korzystać z bazy danych w dowolnym virtualenv, a nie tylko w zdefiniowanym środowisku wirtualnym.
Mam nadzieję, że pomoże to każdemu, kto tu przyjedzie. W przypadku Google Juice, oto wyraźny (i niejasny) język błędu zwracany po napotkaniu tego problemu:
Polecenie python setup.py egg_info nie powiodło się z kodem błędu 1
źródło
Oto, jak udało mi się rozwiązać ten problem na moim komputerze Mac (OSX 10.9):
brew update brew install --force ossp-uuid brew install postgresql pip install psycopg
Otrzymałem błąd CLANG, kiedy próbowałem
pip install psycopg
( problem z LLVM 5.1 ), więc zamiast tego musiałem zainstalować psycopg za pomocą tego polecenia:ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg
Jest podobny do rozwiązania Mingyu , ale jest wystarczająco dużo różnic, o których pomyślałem, że warto się nimi podzielić.
źródło
Ten błąd pojawia się, gdy narzędzia do kompilacji nie mogą znaleźć bibliotek Postgresql.
Często wymagane jest poinstruowanie psycopg2, jak znaleźć plik binarny pg_config, możesz:
dodaj ścieżkę do pg_config w ścieżce do powłoki (/ usr / local / pgsql / bin /)
lub edytuj plik setup.cfg w katalogu źródłowym psycopg2 i podaj pełną ścieżkę do pg_config w wierszu zaczynającym się od pg_config =
locate pg_config
aby dowiedzieć się, gdzie się znajduje, lub po prostu wpisz,which pg_config
a powinno wskazać ścieżkę.Rzadziej błąd wynika z braku zainstalowanego postgresql w systemie. Jeśli tak, pobierz i skompiluj postgres lub pobierz wstępnie skompilowany plik binarny psycopg2 dla OS X.
źródło
Dla
OS X El Capitan (10.11.6)
+brew
+virtualenv
+PostgreSQL 9.5
:Po zainstalowaniu
PostgreSQL 9.5
:brew install postgresql@9.5
Następnie otwórz terminal i wykonaj:
export PATH=$PATH:/usr/local/opt/postgresql\@9.5/bin/ pip install psycopg2
źródło
musisz skonfigurować ścieżkę postgresql:
export PATH=$PATH:/Library/PostgreSQL/11/bin
potem musisz zainstalować wymagania:
pip3 install -r requirements
źródło
virtualenv jest przeznaczony dla pakietów Pythona. Nie sądzę, abyś mógł zawierać postgresy w virtualenv. Komunikat o błędzie, który widzisz, jest prawdopodobnie spowodowany tym, że nie zainstalowałeś jeszcze Postgres. Skrypt instalacyjny psycopg2 szuka plików postgres (w tym przypadku pg_config) i nie znajduje ich, ponieważ nie jest zainstalowany. Postgres nie może być zainstalowany przy użyciu pip ani virtualenv.
źródło
W systemie Windows zainstalowałem ręcznie postgres z http://www.enterprisedb.com/products-services-training/pgdownload#windows . Po tym działa to samo polecenie.
źródło
Oprócz odpowiedzi udzielonych przez @bkev i @andi, zgodnie z dokumentacją na Postgres.app, powinieneś dodać następujące informacje do swojego bash_profile na Macu:
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
Zauważ, że nie ma zakodowanego numeru wersji. Chciałem to dodać jako komentarz do powyższych odpowiedzi, ale nie mam na to wystarczającego przedstawiciela.
źródło
Jeśli używasz postgresql 9.4, plik znajduje się w
Nazwa pakietu to
postgresql94-9.4.9-1PGDG.rhel6.x86_64
aby dodać pg_config do swojej PATH, wykonaj następujące czynności
PATH=$PATH:/usr/pgsql-9.4/bin/
źródło
Jeśli nie musisz specjalnie używać
psycopg
sterownika, przełącz się napg8000
sterownik. To czysty Python i mniej wybredny.źródło
W Ubuntu potrzebowałem tylko pakietu deweloperskiego postgres:
sudo apt-get install postgresql-server-dev-all
źródło
Mój znajdował się w /Library/PostgreSQL/9.4/bin
export PATH=$PATH:/Library/PostgreSQL/9.4/bin
źródło