Jak zainstalować psycopg2 z „pip” w Pythonie?


506

Używam virtualenvi muszę zainstalować „psycopg2”.

Zrobiłem następujące:

pip install http://pypi.python.org/packages/source/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160

I mam następujące wiadomości:

Downloading/unpacking http://pypi.python.org/packages/source/p/psycopg2/psycopg2
-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
  Downloading psycopg2-2.4.tar.gz (607Kb): 607Kb downloaded
  Running setup.py egg_info for package from http://pypi.python.org/packages/sou
rce/p/psycopg2/psycopg2-2.4.tar.gz#md5=24f4368e2cfdc1a2b03282ddda814160
    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'.
    Complete output from command python setup.py egg_info:
    running egg_info

creating pip-egg-info\psycopg2.egg-info

writing pip-egg-info\psycopg2.egg-info\PKG-INFO

writing top-level names to pip-egg-info\psycopg2.egg-info\top_level.txt

writing dependency_links to pip-egg-info\psycopg2.egg-info\dependency_links.txt

writing manifest file 'pip-egg-info\psycopg2.egg-info\SOURCES.txt'

warning: manifest_maker: standard file '-c' not found

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
Storing complete log in C:\Documents and Settings\anlopes\Application Data\pip\p
ip.log

Moje pytanie, muszę to zrobić tylko, aby psycopg2 działał?

python setup.py build_ext --pg-config /path/to/pg_config build ...

3
Czy to zadziałało, gdy próbowałeś Python setup.py build_ext --pg-config / path / to / pg_config build ... ??
lajarre

2
W przypadku python 3.4 lub python 3.5 musisz zainstalować odpowiedni pakiet deweloperski verion, taki jak sudo apt install libpq-dev python3.4-devlubsudo apt install libpq-dev python3.5-dev
Avinash Raj

Odpowiedzi:


809

Uwaga : Od pewnego czasu w PyPI istnieją koła binarne dla systemu Windows, więc nie powinno to już stanowić problemu dla użytkowników systemu Windows. Poniżej znajdują się rozwiązania dla użytkowników Linuksa i komputerów Mac, ponieważ wielu z nich znajduje ten post podczas wyszukiwania w Internecie.


opcja 1

psycopg2-binaryZamiast tego zainstaluj pakiet PyPI, ma on koła Python dla systemu Linux i Mac OS.

pip install psycopg2-binary

Opcja 2

Zainstaluj wymagania wstępne do zbudowania psycopg2pakietu ze źródła:

Debian / Ubuntu

Python 3

sudo apt install libpq-dev python3-dev

Może być konieczne zainstalowanie python3.8-devlub podobne w przypadku np. Python 3.8.

Python 2 1

sudo apt install libpq-dev python-dev

Jeśli to nie wystarczy, spróbuj

sudo apt install build-essential

lub

sudo apt install postgresql-server-dev-all

przed ponownym zainstalowaniem psycopg2.

CentOS 6

Zobacz odpowiedź Banjera


1 Naprawdę? Jest rok 2020


7
11.04: różne błędy, to samo rozwiązanie. Uwielbiam wersje deweloperskie!
I159,

5
@ I159 - Te *-devpakiety zawierają pliki niezbędne do kompilowania aplikacji ze źródła , która korzysta z funkcji oferowanych przez biblioteki (jak psycopg2używa libpqi pythonbibliotek, między innymi).
joar

21
Używam Ubuntu 12.04 LTS, a także musiałemsudo apt-get install postgresql-server-dev-all
caleb

4
Czy ktoś mógłby wyjaśnić, dlaczego nie tylko katalog zawierający pg_config do PATH (lub użyć --pg-config)?
lajarre

5
Jeśli jesteś tutaj, ponieważ masz problemy z instalacją psycopg2 w kontenerze Seler Pythona 3 z Dockerhub, będziesz również musiał zainstalować niezbędne do kompilacji zsudo apt-get install -y build-essential
derrend

118

W CentOS potrzebujesz pakietów deweloperskich postgres:

sudo yum install python-devel postgresql-devel

Takie było rozwiązanie przynajmniej w CentOS 6.


1
Myślę, że to nie tylko CentOS. psycopg ma macierzyste zależności, więc aby budować ze źródła (co robi pip), biblioteki programistyczne PostgreSQL muszą tam być. (Może nagłówki C? Nie wiem dużo o kompilowaniu kodu natywnego.)
jpmc26

3
Zgadzam się, że to rozwiązuje problem na CentOS 6. Chciałbym dodać, że musiałem dodać /usr/pgsql-9.3/bin do $ PATH. Oto post podający przykład tego, jak to zrobić. serverfault.com/questions/102932/…
Ryder Brooks

W przypadku CentOS 7 i Python 3.4 musiałem zainstalować „python34-devel”. Moja odpowiedź na powiązane pytanie: stackoverflow.com/a/42370489/26219
Mark Edington

Pracował na AWS EC2 z 64-bitowym Amazon Linux / 2.5.1 opartym na RHEL
Ben Wheeler,

W przypadku Python3 w Fedorze użyj sudo yum install python36-devel(zamień 36 na swoją wersję Python 3).
LoMaPh

85

W systemie Mac Mavericks z Postgres.app w wersji 9.3.2.0 RC2 po zainstalowaniu Postgres musiałem użyć następującego kodu:

sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2


sudo PATH = $ PATH: /Applications/Postgres93.app/Contents/MacOS/bin pip install psycopg2 [od 5 kwietnia 2014 r.]
użytkownik798719

2
jeśli używasz virtualenv, nie potrzebujesz 'sudo', więc aktywuj virtualenv i uruchom 'PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2'
elin3t

3
Mój przypadek OS X Ver 10.9.4: sudo PATH = $ PATH: /Library/PostgreSQL/9.2/bin pip install psycopg2
emecas

3
Tak, to też działało dla mnie. Po zainstalowaniu PostgreSQL musiałem ustawić swoją ścieżkę PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2.
iamfrancisyo

4
Użyj najnowszej wersji: PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/latest/bin pip install psycopg2
Diego Sarmiento

80

jeśli używasz komputera Mac, możesz użyć homebrew

brew install postgresql

Wszystkie inne opcje są tutaj: http://www.postgresql.org/download/macosx/

Powodzenia


2
Odpowiedź nichochara i odpowiedź attomosa (instalacja postgresql i modyfikacja ścieżki) razem rozwiązały problem. najłatwiejszym sposobem edycji ścieżki jest uruchomienie „sudo nano / etc / path” z poziomu terminala.
tbradley22

2
Dziękuję Ci za to. Miałem oszaleć, zanim to znalazłem!
Leo C Han

1
Pracowałem też dla mnie, nie trzeba małpować na mojej ścieżce (i ogólnie nie polecam tutaj sudo - powinieneś być w stanie to zrobić w przestrzeni użytkownika).
duozmo

To nie instaluje postgresql w sposób, w virtualenvjaki poprosił PO.
Jorge Leitao

Nie sądzę, żeby OP koniecznie chciał postgres w virtualenv. Powiedział, że używa virtualenv. Myślę, że źle zrozumiał, że postgresql jest większą usługą niż zwykła biblioteka Pythona.
nichochar

61

Ostatnio skonfigurowałem psycopg2 na komputerze z systemem Windows. Najłatwiejszą instalacją jest użycie pliku wykonywalnego systemu Windows. Można go znaleźć na stronie http://stickpeople.com/projects/python/win-psycopg/ .

Aby zainstalować natywny plik binarny w środowisku wirtualnym, użyj easy_install:

C:\virtualenv\Scripts\> activate.bat
(virtualenv) C:\virtualenv\Scripts\> easy_install psycopg2-2.5.win32-py2.7-pg9.2.4-release.exe

3
Dziękuję za odpowiedź. Ale muszę zainstalować w środowisku wirtualnym. Z pozdrowieniami,
André

4
Ta sztuczka (dzięki uprzejmości Neda Batcheldera) pomogła mi w przeszłości zainstalować z plików binarnych do virtualenv
Praveen Gollakota

13
Czy naprawdę nie ma sposobu, aby „zainstalować pip psycopg2” działa w systemie Windows? Nawet jeśli łatka na psycopg2 jest konieczna, warto byłoby.
slacy

1
Wystąpił ten błąd, gdy postgres nie został zainstalowany na moim komputerze - zainstalowałem postgres i błąd zniknął ...
Sam Joseph

2
link stickpeople omawia także wirtualną env i wskazuje na wersję instalacyjną pip github.com/nwcell/psycopg2-windows
seanv507

27

W przypadku Python 3 powinieneś używać sudo apt-get install libpq-dev python3-devw Debianie.


27

To zadziałało dla mnie (na RHEL, CentOS:

sudo yum install postgresql postgresql-devel python-devel

A teraz dołącz ścieżkę do binarnego katalogu postgresql przy instalacji pip:

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

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

AKTUALIZACJA: W przypadku Pythona 3 zainstaluj python3-develzamiastpython-devel


Zauważ, że nie musiałem aktualizować zmiennej środowiskowej PATH.
ponury

Nie powinieneś tego robić, jeśli przeładujesz sesję terminala.
radtek

Doskonałe Dziękuję bardzo.
Jorge Vidinha

Jeśli używasz Python 3, musisz zainstalować ponumerowane pakiety rozwojowe Python. Zobacz: stackoverflow.com/a/42370489/26219
Mark Edington

21

Jeśli używasz Mac OS, powinieneś zainstalować PostgreSQL ze źródła. Po zakończeniu instalacji musisz dodać tę ścieżkę, używając:

export PATH=/local/pgsql/bin:$PATH

lub możesz dołączyć ścieżkę w następujący sposób:

export PATH=.../:usr/local/pgsql/bin

w twoim .profilepliku lub .zshrcpliku.

To może się różnić w zależności od systemu operacyjnego.

Możesz śledzić proces instalacji z http://www.thegeekstuff.com/2009/04/linux-postgresql-install-and-configure-from-source/


1
Dlaczego ze źródła zamiast Homebrew?
duozmo

@duozmo zostało odebrane w 2012 roku i wydaje mi się, że próbowałem zainstalować go w tym czasie z Homebrew, ale nie udało się. Teraz bez problemu zainstalowałem PostgreSQL przy użyciu Homebrew.
attomos

17

Dotychczasowe odpowiedzi są zbyt podobne do magicznych przepisów. Otrzymany błąd informuje, że pip nie może znaleźć potrzebnej części biblioteki zapytań PostgreSQL. Być może dzieje się tak dlatego, że masz zainstalowany w niestandardowym miejscu dla twojego systemu operacyjnego, dlatego komunikat sugeruje użycie opcji --pg-config.

Ale częstszym powodem jest to, że wcale nie masz zainstalowanego libpq. Zdarza się to zwykle na komputerach, na których NIE masz zainstalowanego serwera PostgreSQL, ponieważ chcesz tylko uruchamiać aplikacje klienckie, a nie sam serwer. Każdy system operacyjny / dystrybucja jest inny, na przykład na Debian / Ubuntu musisz zainstalować libpq-dev. Pozwala to na kompilację i połączenie kodu z biblioteką zapytań PostgreSQL.

Większość odpowiedzi sugeruje również instalację biblioteki deweloperskiej Python. Bądź ostrożny. Jeśli używasz tylko domyślnego Pythona zainstalowanego przez twoją dystrybucję, to zadziała, ale jeśli masz nowszą wersję, może to powodować problemy. Jeśli zbudowałeś Python na tym komputerze, to masz już biblioteki deweloperskie potrzebne do kompilacji bibliotek C / C ++ do współpracy z Pythonem. Tak długo, jak używasz poprawnej wersji pip, tej zainstalowanej w tym samym folderze bin, co plik binarny python, wszystko jest ustawione. Nie ma potrzeby instalowania starej wersji.


1
A o Os X? Mam na myśli, że jest oparty na Uniksie, ale myślę, że może być inny.
Lara,

13

On Debian/Ubuntu:

Najpierw zainstaluj i zbuduj zależności psycopg2pakietu:

# apt-get build-dep python-psycopg2

Następnie w środowisku wirtualnym skompiluj i zainstaluj psycopg2moduł:

(env)$ pip install psycopg2

6

Zrobiłem to wcześniej, gdzie w systemie Windows instalujesz się najpierw w podstawowej instalacji Pythona.

Następnie ręcznie skopiuj zainstalowany psycopg2 do instalacji virtualenv.

To nie jest ładne, ale działa.


2
czy możesz to rozwinąć? Skąd bierzesz psycopg2 na pierwszym miejscu?
Saher Ahwal

2
pliki binarne systemu Windows są dostępne na stronie stickpeople.com/projects/python/win-psycopg
monkut

Zrobiłem to również po wyczerpujących dniach i wszystkich innych opcjach opisanych online. Nadal jestem oszołomiony tym, co uniemożliwiało zainstalowanie go przy użyciu pip venv. Byłem w stanie zainstalować poza środowiskiem wirtualnym, nie ma problemu. Następnie dosłownie skopiowałem ten plik z katalogu biblioteki pakietów Pythona i wkleiłem w nim ten sam plik venv. Mam przeczucie, że ponieważ moje wersje Pythona są dystrybucjami Anaconda, coś było nie tak z założoną / używaną ścieżką.
kuanb

5

Oprócz instalacji wymaganych pakietów, musiałem również ręcznie dodać katalog bin PostgreSQL do PATH.
$vi ~/.bash_profile
Dodaj PATH=/usr/pgsql-9.2/bin:$PATHwcześniej export PATH.
$source ~/.bash_profile
$pip install psycopg2


Wiesz, dlaczego to nie kończy się na domyślnej ścieżce?
Bret

1
Mam taki błąd, jak to naprawić, proszę mi pomóc !!! Polecenie „/ usr / bin / python -c” importuj setuptools, tokenize; __ plik __ = '/ private / tmp / pip-build-AUbwwG / psycopg2 / setup.py'; exec (compile (getattr (tokenize, 'open', open), open ) ( file ) .read (). replace ('\ r \ n', '\ n'), file , 'exec')) "install --record /tmp/pip-44Va05-record/install-record.txt - pojedyncza wersja zarządzana zewnętrznie - kompilacja "nie powiodła się z kodem błędu 1 w / private / tmp / pip-build-AUbwwG / psycopg2
vijay

3

W systemie Windows XP pojawia się ten błąd, jeśli postgres nie jest zainstalowany ...


jesteś pewien, że to prawda? Zainstalowałem Postgres na moim komputerze z systemem Windows i nadal go otrzymuję. ?
Saher Ahwal

2
Dlaczego nie mają tego na swojej stronie jako warunek wstępny, aby mieć postgres?
Saher Ahwal


3

Zanim będziesz mógł zainstalować psycopg2, musisz zainstalować pakiet python-dev.

Jeśli pracujesz z Linuksa (i być może z innych systemów, ale nie potrafię mówić z doświadczenia), musisz upewnić się, że jesteś dość dokładny w kwestii wersji Pythona, która działa podczas instalacji pakietu deweloperskiego.

Na przykład, gdy użyłem polecenia:

sudo apt-get install python3-dev

Wciąż próbowałem napotkać ten sam błąd

pip install psycopg2

Gdy korzystam z Pythona 3.7, musiałem użyć polecenia

sudo apt-get install python3.7-dev

Gdy to zrobiłem, nie napotkałem już żadnych problemów. Oczywiście, jeśli korzystasz z Pythona w wersji 3.5, zmieniłbyś to 7 na 5.


2
To powinna być odpowiedź, sudo apt-get install python-x.x-devnaprawiono problem.
Arbazz Hussain

2

Walczyłem z tym od wielu dni i nareszcie wymyśliłem, jak uruchomić polecenie „pip install psycopg2”, aby uruchamiało się w virtualenv w systemie Windows (działającym w Cygwin).

Uderzyłem w „nie znaleziono pliku wykonywalnego pg_config”. błąd, ale już pobrałem i zainstalowałem postgres w systemie Windows. Zainstalował się również w Cygwin; uruchomienie „pg_config” w Cygwin dało „/ usr / bin / pg_config”, a uruchomienie „pg_config” dało rozsądny wynik - jednak wersja zainstalowana z Cygwin to:

WERSJA = PostgreSQL 8.2.11

To nie będzie działać z bieżącą wersją psycopg2, która wydaje się wymagać co najmniej 9.1. Kiedy dodałem „c: \ Program Files \ PostgreSQL \ 9.2 \ bin” do mojej ścieżki Windows, instalator pip Cygwin był w stanie znaleźć poprawną wersję PostgreSQL i udało mi się pomyślnie zainstalować moduł za pomocą pip. (Jest to prawdopodobnie lepsze niż używanie wersji PostgreSQL w Cygwin, ponieważ wersja natywna będzie działać znacznie szybciej).


2

W Fedorze 24: dla Python 3.x

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

Aktywuj swoje środowisko wirtualne:

pip install psycopg2

2

Psycopg2 zależy od bibliotek Postgres. W systemie Ubuntu możesz użyć:

apt-get install libpq-dev

Następnie:

pip install psycopg2

Mieszanie pakietów pip i pakietów apt-get nie jest dobrą praktyką.
wswld,

1

Dla mało Windowsowych użytkowników utknęło na konieczności instalowania psycopg2 z linku poniżej, po prostu zainstaluj go do dowolnej instalacji Pythona, którą skonfigurowałeś. Umieści folder o nazwie „psycopg2” w folderze site-packages instalacji Pythona.

Następnie po prostu skopiuj ten folder do katalogu site-packages swojego virtualenv, a nie będziesz mieć problemów.

tutaj jest link do pliku wykonywalnego do instalacji psycopg2

http://www.lfd.uci.edu/~gohlke/pythonlibs/


próbowałem tego i otrzymuję psycopg2-2.6-cp34-none-win_amd64.whl nie jest obsługiwanym kołem na tej platformie.
jayeshkv


1

Mógłbym zainstalować go na komputerze z systemem Windows i za pomocą Anaconda / Spyder z Pythonem 2.7, wykonując następujące polecenia:

 !pip install psycopg2

Następnie, aby ustanowić połączenie z bazą danych:

 import psycopg2
 conn = psycopg2.connect(dbname='dbname',host='host_name',port='port_number', user='user_name', password='password')

Mam tę pracę z bazą danych wymienioną w psql -l, host lokalny hosta, domyślny port bazy danych 5432, użytkownik wymieniony na liście \dupo wejściu do psql i zgadywaniu hasła.
Harry Moreno,

1

W podstawowych rozkładach Arch :

sudo pacman -S python-psycopg2
pip2 install psycopg2  # Use pip or pip3 to python3


0

Na Ubuntu potrzebowałem tylko pakietu deweloperskiego postgres:

sudo apt-get install postgresql-server-dev-all

* Testowany w virtualenv


0

W systemie OSX 10.11.6 (El Capitan)

brew install postgresql
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2

W systemie OSX 10.12.3 (Sierra):brew install postgresql PATH=$PATH:/usr/local/Cellar/postgresql/9.6.2/bin/ pip install psycopg2
ishandutta2007

W systemie OS X 10.14 było to bardzo trudne. Zobacz szczegółowe rozwiązanie tutaj: stackoverflow.com/a/57014480/2162844
Bisonbleu

0

W OSX z Macports:

sudo port install postgresql96
export PATH=/opt/local/lib/postgresql96/bin:$PATH

0

Miałem ten problem, głównym powodem były zainstalowane 2 równe wersje. Jeden przez postgres.app i jeden przez HomeBrew.

Jeśli zdecydujesz się zachować tylko aplikację:

brew unlink postgresql
pip3 install psycopg2

0

Na macOS Mojave upewnij się, że masz najnowszą aktualizację z narzędziami wiersza polecenia 10.3 - która działała dla mnie - zaktualizowałem ją za pomocą aktualizacji oprogramowania, poprzednia wersja narzędzi wiersza polecenia na mojejve nie działała dla mnie.



-2

W systemie Windows tak to działa
systemie W wierszu polecenia po zainstalowaniu kolby za pomocą pip w środowisku wirtualnym uruchom to polecenie

>pip install psycopg2

Sprawdź to

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.