Musisz zainstalować postgresql-server-dev-XY do zbudowania rozszerzenia po stronie serwera lub libpq-dev do zbudowania aplikacji po stronie klienta


243

Pracuję nad projektem Django z virtualenv i łączę go z lokalną bazą danych postgres. kiedy uruchamiam projekt mówi:

ImportError: No module named psycopg2.extensions

następnie użyłem tego polecenia, aby zainstalować

pip install psycopg2

następnie podczas instalacji daje następujący błąd.

Downloading/unpacking psycopg2==2.4.4
  Downloading psycopg2-2.4.4.tar.gz (648kB): 648kB downloaded
  Running setup.py (path:/home/muhammadtaqi/Projects/MyProjects/OnlineElectionCampaign/venv/build/psycopg2/setup.py) egg_info for package psycopg2

    Error: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.

    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: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.



----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /home/muhammadtaqi/Projects/MyProjects/OnlineElectionCampaign/venv/build/psycopg2
Storing debug log for failure in /home/muhammadtaqi/.pip/pip.log

Czy zainstalowałeś ten pakiet? Jeśli nie, zainstalowanie go powinno rozwiązać problem. Należy pamiętać, że postgresql-server-X.Ysama instalacja nie pomogłaby, ponieważ to po prostu instaluje pliki binarne, biblioteki i pliki danych serwera, a nie pliki programistyczne (które znajdują się we wspomnianym pakiecie).
Abrixas2

Odpowiedzi:


490

Użyj następujących poleceń, to rozwiąże błąd:

sudo apt-get install postgresql

następnie strzelaj:

sudo apt-get install python-psycopg2

i ostatni:

sudo apt-get install libpq-dev

36
Potrzebowałem tylko bibliotek klienta. „sudo apt-get install libpq-dev” rozwiązało to dla mnie. Dzięki
Priyeshj,

6
Stwierdziłem, że musiałem dodatkowo zainstalować sudo apt-get install python-dev, aby w końcu mógł działać
ScottMcC

18
Dziękuję Ci! sudo apt-get install libpq-devpracował dla mnie!
Julian Guterman

1
@ManishShrivastava, Welcome
megabajtów

1
użyj, sudo apt-get install python3-psycopg2aby dodać do python3
Ramesh Verma

67

Po prostu uruchamiam to polecenie jako root z terminala i problem został rozwiązany,

sudo apt-get install -y postgis postgresql-9.3-postgis-2.1
pip install psycopg2

lub

sudo apt-get install libpq-dev python-dev
pip install psycopg2

5
libpq-devpython-dev
Wielkie

2
postgis? woot
techkuz

czasami uruchomienie aktualizacji sudo apt naprawi tego typu błędy. Próbowałem obu rozwiązań, ale nie powiodło się. Uruchamianie sudo apt udpate rozwiązało to.
Aleem

46

Wystarczy zainstalować libpq-dev

$ sudo apt-get install libpq-dev

30

Dla mnie to proste polecenie rozwiązało problem:

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

Następnie mogę zrobić:

 pip install psycopg2

14

W przypadku Python 3:

sudo apt install python3-dev postgresql postgresql-contrib python3-psycopg2 libpq-dev

i wtedy mogłem zrobić:

pip3 install psycopg2

13

Zmienili opakowanie psycopg2. Zainstalowanie wersji binarnej naprawiło ten problem. Powyższe odpowiedzi wciąż się utrzymują, jeśli chcesz samodzielnie skompilować plik binarny.

Zobacz http://initd.org/psycopg/docs/news.html#what-s-new-in-psycopg-2-8 .

Pakiety binarne nie są już domyślnie instalowane. Pakiet „psycopg2-binary” musi być używany jawnie.

I http://initd.org/psycopg/docs/install.html#binary-install-from-pypi

Więc jeśli nie musisz kompilować własnego pliku binarnego, użyj:

pip install psycopg2-binary

1
Pan uratował mi życie
Haroun Hajem,

3
psycopg2-binarynie wolno go używać w produkcji, ponieważ spowoduje to pewne błędy.
suhailvs

1
psycopg2-binarynie powinien być używany w produkcji: initd.org/psycopg/docs/install.html#binary-install-from-pypi (Skopiowany tekst: Pakiet binarny psycopg2 jest przeznaczony dla początkujących, aby rozpocząć grę z Pythonem i PostgreSQL bez konieczności spełniają wymagania dotyczące kompilacji. Jeśli jesteś opiekunem pakietu publikującego w zależności od psycopg2, nie powinieneś używać „psycopg2-binary” jako zależności modułu. Do użytku produkcyjnego zalecamy użycie dystrybucji źródłowej.)
Joseph Victor Zammit

10

Musisz skonfigurować postgresql-server-dev-XY, gdzie XY wersja twoich serwerów, a zainstaluje libpq-dev i inne zmienne serwera w modułach do programowania po stronie serwera. W moim przypadku tak było

apt-get install postgresql-server-dev-9.5

Czytanie list pakietów ... Gotowe Budowanie drzewa zależności Odczytywanie informacji o stanie ... Gotowe Następujące pakiety zostały automatycznie zainstalowane i nie są już wymagane: libmysqlclient18 mysql-common Użyj 'apt-get autorove', aby je usunąć. Zainstalowane zostaną następujące dodatkowe pakiety:
libpq-dev Sugerowane pakiety: postgresql-doc-10 Zainstalowane zostaną następujące NOWE pakiety: libpq-dev postgresql-server-dev-9.5

W twoim przypadku

sudo apt-get install postgresql-server-dev-X.Y
sudo apt-get install python-psycopg2

4

Korzystałem ze środowiska wirtualnego na Ubuntu 18.04, a ponieważ chciałem tylko zainstalować go jako klienta, musiałem tylko:

sudo apt install libpq-dev
pip install psycopg2

I zainstalowany bez problemów. Oczywiście możesz użyć pliku binarnego, jak powiedziano w innych odpowiedziach, ale wolałem to rozwiązanie, ponieważ zostało to określone w pliku wymagania.txt.

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.