È necessario installare postgresql-server-dev-XY per creare un'estensione sul lato server o libpq-dev per creare un'applicazione sul lato client


243

Sto lavorando al progetto Django con virtualenv e lo collego al database Postgres locale. quando corro il progetto dice:

ImportError: No module named psycopg2.extensions

poi ho usato questo comando per installare

pip install psycopg2

quindi durante l'installazione fornisce il seguente errore.

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

Hai installato quel pacchetto? In caso contrario, installarlo dovrebbe risolvere il problema. Si noti che l'installazione postgresql-server-X.Yda sola non sarebbe utile, poiché installa semplicemente il file binario del server, le librerie e i file di dati, non i file di sviluppo (che si trovano nel pacchetto sopra menzionato).
— Abrixas2

Risposte:


490

Utilizzare questi comandi seguenti, questo risolverà l'errore:

sudo apt-get install postgresql

quindi spara:

sudo apt-get install python-psycopg2

e ultimo:

sudo apt-get install libpq-dev

36
Avevo solo bisogno delle librerie client. "sudo apt-get install libpq-dev" l'ha risolto per me. Grazie
— Priyeshj il

6
Ho scoperto che dovevo installare anche sudo apt-get install python-devoltre per farlo funzionare finalmente
— ScottMcC

18
Grazie! sudo apt-get install libpq-devha funzionato per me!
— Julian Guterman,

1
@ManishShrivastava, Benvenuto
— MegaBytes

1
usa sudo apt-get install python3-psycopg2per aggiungere a python3
— Ramesh Verma l'

67

Ho appena eseguito questo comando come root dal terminale e il problema è risolto,

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

o

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

5
Grazie mille libpq-deve ha python-devfatto la magia necessaria
— avtomaton,

2
postgis? woot
— techkuz,

a volte l'esecuzione di sudo apt update risolverà questo tipo di errori. Ho provato entrambe le soluzioni ma non ci sono riuscito. in esecuzione sudo apt udpate lo ha risolto.
— Aleem,

46

Basta installare libpq-dev

$ sudo apt-get install libpq-dev

30

Per me questo semplice comando ha risolto il problema:

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

Quindi posso fare:

 pip install psycopg2

14

Per Python 3, ho fatto:

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

e poi sono stato in grado di fare:

pip3 install psycopg2

13

Hanno cambiato la confezione di psycopg2. L'installazione della versione binaria ha risolto questo problema per me. Le risposte precedenti continuano a essere valide se si desidera compilare il file binario da soli.

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

I pacchetti binari non sono più installati per impostazione predefinita. Il pacchetto 'psycopg2-binary' deve essere usato esplicitamente.

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

Quindi se non hai bisogno di compilare il tuo binario, usa:

pip install psycopg2-binary

1
Signore, mi hai salvato la vita
— Haroun Hajem,

3
psycopg2-binarynon deve essere utilizzato in produzione, perché causerà alcuni bug.
— suhailvs,

1
psycopg2-binarynon dovrebbe essere usato in produzione: initd.org/psycopg/docs/install.html#binary-install-from-pypi (Testo copiato: il pacchetto psycopg2-binary è pensato per i principianti che iniziano a giocare con Python e PostgreSQL senza la necessità di soddisfare i requisiti di compilazione. Se sei il manutentore di un pacchetto di pubblicazione in base a psycopg2, non dovresti utilizzare "psycopg2-binary" come dipendenza del modulo. Per l'utilizzo in produzione ti consigliamo di utilizzare la distribuzione dei sorgenti.)
— Joseph Victor Zammit

10

Devi installare postgresql-server-dev-XY, dove XY è la versione dei tuoi server, e installerà libpq-dev e altre variabili server sui moduli per lo sviluppo lato server. Nel mio caso lo era

apt-get install postgresql-server-dev-9.5

Lettura degli elenchi di pacchetti ... Fine Creazione dell'albero delle dipendenze Lettura delle informazioni sullo stato ... Fine I seguenti pacchetti sono stati installati automaticamente e non sono più necessari: libmysqlclient18 mysql-common Utilizzare 'apt-get autoremove' per rimuoverli. Verranno installati i seguenti pacchetti extra:
libpq-dev Pacchetti suggeriti: postgresql-doc-10 Verranno installati i seguenti NUOVI pacchetti: libpq-dev postgresql-server-dev-9.5

Nel tuo caso

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

4

Stavo usando un ambiente virtuale su Ubuntu 18.04 e poiché volevo solo installarlo come client, dovevo solo fare:

sudo apt install libpq-dev
pip install psycopg2

E installato senza problemi. Ovviamente, puoi usare il binario come hanno detto altre risposte, ma ho preferito questa soluzione poiché è stata dichiarata in un file requisito.txt.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.