È 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.