Come installare psycopg2 con "pip" su Python?


506

Sto usando virtualenve devo installare "psycopg2".

Ho fatto quanto segue:

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

E ho i seguenti messaggi:

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

La mia domanda, devo solo fare questo per far funzionare psycopg2?

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

3
Ha funzionato quando hai provato python setup.py build_ext --pg-config / path / to / pg_config build ... ??
lajarre,

2
Per python 3.4 o python 3.5, devi installare il pacchetto dev del verion corrispondente come sudo apt install libpq-dev python3.4-devosudo apt install libpq-dev python3.5-dev
Avinash Raj

Risposte:


810

Nota : da un po 'di tempo, ci sono ruote binarie per Windows in PyPI, quindi questo non dovrebbe più essere un problema per gli utenti Windows. Di seguito sono riportate le soluzioni per utenti Linux e Mac, poiché molti di loro trovano questo post tramite ricerche Web.


opzione 1

Installa psycopg2-binaryinvece il pacchetto PyPI, ha le ruote Python per Linux e Mac OS.

pip install psycopg2-binary

opzione 2

Installa i prerequisiti per la creazione del psycopg2pacchetto dall'origine:

Debian / Ubuntu

Python 3

sudo apt install libpq-dev python3-dev

Potrebbe essere necessario installare python3.8-devo simili per esempio Python 3.8.

Python 2 1

sudo apt install libpq-dev python-dev

Se ciò non bastasse, prova

sudo apt install build-essential

o

sudo apt install postgresql-server-dev-all

anche prima di reinstallare psycopg2.

CentOS 6

Vedi la risposta di Banjer


1 Davvero? È il 2020


7
11.04: errori diversi, la stessa soluzione. Adorate le versioni di sviluppo!
I159,

5
@ I159 - I *-devpacchetti contengono i file necessari per compilare un'applicazione dall'origine che utilizza le funzioni fornite dalla libreria (come psycopg2usa le librerie libpqe python, tra gli altri).
Joar,

21
Sto usando Ubuntu 12.04 LTS e ho anche dovutosudo apt-get install postgresql-server-dev-all
caleb il

4
Qualcuno potrebbe spiegare perché non solo la directory contenente pg_config nel PERCORSO (o usare --pg-config)?
lajarre,

5
Se sei qui perché stai riscontrando problemi con l'installazione di psycopg2 nel contenitore sedano Python 3 di Dockerhub, dovrai anche installare build-essential consudo apt-get install -y build-essential
derrend,

118

Su CentOS, hai bisogno dei pacchetti di sviluppo postgres:

sudo yum install python-devel postgresql-devel

Questa era la soluzione almeno su CentOS 6.


1
Questo non è solo CentOS, credo. psycopg ha dipendenze native, quindi per costruire dal sorgente (che è quello che fa pip), le librerie di sviluppo PostgreSQL devono essere lì. (Le intestazioni C, forse? Non so molto sulla compilazione del codice nativo.)
jpmc26

3
Concordo sul fatto che ciò risolva il problema su CentOS 6. Vorrei aggiungere che dovevo aggiungere /usr/pgsql-9.3/bin a $ PATH. Ecco un post che fornisce un esempio di come farlo. serverfault.com/questions/102932/…
Ryder Brooks,

Per CentOS 7 e Python 3.4 ho dovuto installare "python34-devel". La mia risposta a una domanda correlata: stackoverflow.com/a/42370489/26219
Mark Edington

Ha lavorato su AWS EC2, con Amazon Linux / 2.5.1 a 64 bit basato su RHEL
Ben Wheeler

Per Python3 in Fedora usa sudo yum install python36-devel(sostituisci 36 con la tua versione di Python 3).
LoMaPh

85

Su Mac Mavericks con Postgres.app versione 9.3.2.0 RC2 avevo bisogno di usare il seguente codice dopo l'installazione di Postgres:

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 [al 5 aprile 2014]
user798719

2
se stai usando virtualenv non hai bisogno di 'sudo' così attivo virtualenv ed esegui 'PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2'
elin3t

3
Il mio caso OS X versione 10.9.4: sudo PATH = $ PATH: /Library/PostgreSQL/9.2/bin pip install psycopg2
emecas,

3
Sì, ha funzionato anche per me. Dopo aver installato PostgreSQL, ho dovuto impostare il mio percorso facendo PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2.
iamfrancisyo,

4
Usa l'ultima versione: PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/latest/bin pip install psycopg2
Diego Sarmiento

80

se sei su un Mac puoi usare l'homebrew

brew install postgresql

E tutte le altre opzioni sono qui: http://www.postgresql.org/download/macosx/

In bocca al lupo


2
La risposta di nichochar e la risposta di attomos (installa postgresql e modifica il percorso) hanno risolto insieme il problema per me. il modo più semplice per modificare il percorso è eseguire "sudo nano / etc / path" dal proprio terminale.
tbradley22,

2
Grazie per questo. Stavo per impazzire prima di averlo trovato!
Leo C Han,

1
Ha funzionato anche per me, non c'è bisogno di fare la scimmia con il mio percorso (e generalmente, non consiglierei sudo qui - dovresti essere in grado di farlo nello spazio utente).
duozmo,

Questo non installa postgresql virtualenvcome l'OP richiesto.
Jorge Leitao,

Non credo che OP volesse necessariamente postgres in virtualenv. Ha detto che sta usando virtualenv. Penso che abbia frainteso che Postgresql è un servizio più grande di una semplice libreria Python.
nichochar,

61

Recentemente ho configurato psycopg2 su una macchina Windows. L'installazione più semplice sta usando un file binario eseguibile di Windows. Puoi trovarlo su http://stickpeople.com/projects/python/win-psycopg/ .

Per installare il file binario nativo in un ambiente virtuale, utilizzare 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
Grazie per la risposta. Ma devo installare su un ambiente virtuale. Cordiali saluti,
André

4
Questo trucco (per gentile concessione di Ned Batchelder) mi ha aiutato in passato a installare da binari a virtualenv
Praveen Gollakota,

13
Non c'è davvero modo di far funzionare "pip install psycopg2" su Windows? Anche se è necessaria una patch per psycopg2, ne varrebbe la pena.
slacy,

1
Ho avuto questo errore quando Postgres non è stato installato sul mio computer - Ho installato Postgres e l'errore è andato via ...
Sam Joseph

2
il link stickpeople discute anche di env virtuale e punta a una versione di installazione pip github.com/nwcell/psycopg2-windows
seanv507

27

Per Python 3 dovresti usare sudo apt-get install libpq-dev python3-devsotto Debian.


27

Questo è ciò che ha funzionato per me (Su RHEL, CentOS:

sudo yum install postgresql postgresql-devel python-devel

E ora includi il percorso della tua directory binaria postgresql con l'installazione pip:

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

Assicurati di includere il percorso corretto. È tutto :)

AGGIORNAMENTO: per python 3, installare python3-develinvece dipython-devel


Nota che non avevo bisogno di aggiornare la variabile d'ambiente PATH.
torvo

Non dovresti farlo se ricarichi la sessione del terminale.
Radtek,

Eccellente Grazie mille.
Jorge Vidinha,

Se si utilizza Python 3, è necessario installare pacchetti di sviluppo Python numerati. Vedi: stackoverflow.com/a/42370489/26219
Mark Edington,

21

Se usi Mac OS, dovresti installare PostgreSQL dal sorgente. Al termine dell'installazione, è necessario aggiungere questo percorso utilizzando:

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

oppure puoi aggiungere il percorso in questo modo:

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

nel tuo .profilefile o .zshrcfile.

Questo può variare in base al sistema operativo.

Puoi seguire il processo di installazione da http://www.thegeekstuff.com/2009/04/linux-postgresql-install-and-configure-from-source/


1
Perché dalla fonte invece che dall'homebrew?
duozmo,

@duozmo ha ricevuto una risposta nel 2012 e credo di aver provato a installarlo con Homebrew in quel momento ma non è riuscito. Ora ho installato PostgreSQL usando Homebrew senza problemi.
attomos,

17

Le risposte finora sono troppo simili a ricette magiche. L'errore che hai ricevuto ti dice che pip non riesce a trovare una parte necessaria della libreria di query PostgreSQL. Forse perché lo hai installato in un posto non standard per il tuo sistema operativo, motivo per cui il messaggio suggerisce di usare l'opzione --pg-config.

Ma una ragione più comune è che non hai installato libpq. Ciò accade comunemente su macchine in cui NON è installato il server PostgreSQL perché si desidera eseguire solo le app client, non il server stesso. Ogni sistema operativo / distribuzione è diverso, ad esempio su Debian / Ubuntu è necessario installare libpq-dev. Ciò consente di compilare e collegare il codice con la libreria di query PostgreSQL.

La maggior parte delle risposte suggerisce anche l'installazione di una libreria di sviluppo Python. Stai attento. Se stai usando solo il Python predefinito installato dalla tua distribuzione, funzionerà, ma se hai una versione più recente, potrebbe causare problemi. Se hai creato Python su questa macchina, allora hai già le librerie dev necessarie per compilare le librerie C / C ++ per l'interfaccia con Python. Finché stai usando la versione pip corretta, quella installata nella stessa cartella bin del binario python, sei pronto. Non è necessario installare la versione precedente.


1
E di Os x? Voglio dire, è basato su Unix ma penso che possa essere diverso.
Lara,

13

Su Debian/Ubuntu:

Prima installa e costruisci dipendenze del psycopg2pacchetto:

# apt-get build-dep python-psycopg2

Quindi, nel tuo ambiente virtuale, compila e installa il psycopg2modulo:

(env)$ pip install psycopg2

6

L'ho già fatto in precedenza, dove in Windows si installa prima nell'installazione di base di Python.

Quindi, copia manualmente psycopg2 installato nell'installazione virtualenv.

Non è carino, ma funziona.


2
puoi elaborare per favore. Dove prendi psycopg2 al primo posto?
Saher Ahwal,

2
i binari di Windows sono disponibili su stickpeople.com/projects/python/win-psycopg
monkut

Ho fatto anche questo, dopo giorni estenuanti e tutte le altre opzioni che sono state descritte online. Sono ancora sbalordito da ciò che gli impediva di essere installato con pip in venv. Sono stato in grado di installare al di fuori dell'ambiente virtuale, nessun problema. Ho quindi letteralmente copiato quel file dalla mia directory della libreria dei pacchetti Python e incollato all'interno dello stesso all'interno di venv. Il mio sospetto è che, poiché le mie versioni di Python sono distribuzioni Anaconda, c'era qualcosa che non andava nel percorso che veniva assunto / utilizzato.
kuanb,

5

Oltre a installare i pacchetti richiesti, avevo anche bisogno di aggiungere manualmente la directory bin PostgreSQL a PATH.
$vi ~/.bash_profile
Aggiungi PATH=/usr/pgsql-9.2/bin:$PATHprima export PATH.
$source ~/.bash_profile
$pip install psycopg2


Qualche idea sul perché questo non finisca nel percorso predefinito?
Bret,

1
Ho ricevuto un errore del genere come correggere questo per favore aiutatemi !!! Comando "/ usr / bin / python -c" importa setuptools, tokenize; __ file __ = '/ private / tmp / pip-build-AUbwwG / psycopg2 / setup.py'; exec (compilare (getattr (tokenize, 'open', open ) ( file ) .read (). replace ('\ r \ n', '\ n'), file , 'exec')) "install --record /tmp/pip-44Va05-record/install-record.txt --single-version-external-managed --compile "non riuscito con codice di errore 1 in / private / tmp / pip-build-AUbwwG / psycopg2
vijay

3

Su Windows XP viene visualizzato questo errore se Postgres non è installato ...


sei sicuro che sia giusto? Ho installato Postgres sul mio computer Windows e lo ottengo ancora. ?
Saher Ahwal,

2
Perché non lo hanno sul loro sito come pre-req per avere postgres?
Saher Ahwal,


3

Prima di poter installare psycopg2 dovrai installare il pacchetto python-dev.

Se stai lavorando da Linux (e forse da altri sistemi ma non posso parlare per esperienza) dovrai assicurarti di essere abbastanza esatto su quale versione di Python stai eseguendo quando installi il pacchetto dev.

Ad esempio quando ho usato il comando:

sudo apt-get install python3-dev

Ho ancora riscontrato lo stesso errore durante il tentativo di

pip install psycopg2

Dato che sto usando Python 3.7, avevo bisogno di usare il comando

sudo apt-get install python3.7-dev

Una volta fatto questo, non ho avuto più problemi. Ovviamente se su python versione 3.5 cambieresti da 7 a 5.


2
Questa dovrebbe essere la risposta, sudo apt-get install python-x.x-devrisolto il problema.
Arbazz Hussain,

2

Ho combattuto con questo per giorni e ho finalmente capito come far funzionare il comando "pip install psycopg2" in un virtual virtual in Windows (eseguendo Cygwin).

Stavo colpendo il "eseguibile pg_config non trovato." errore, ma avevo già scaricato e installato Postgres in Windows. Installato anche in Cygwin; eseguendo "quale pg_config" in Cygwin ha dato "/ usr / bin / pg_config", e eseguendo "pg_config" ha dato un risultato sano, tuttavia la versione installata con Cygwin è:

VERSIONE = PostgreSQL 8.2.11

Questo non funzionerà con la versione corrente di psycopg2, che sembra richiedere almeno 9.1. Quando ho aggiunto "c: \ Programmi \ PostgreSQL \ 9.2 \ bin" al mio percorso di Windows, il programma di installazione pip di Cygwin è stato in grado di trovare la versione corretta di PostgreSQL e sono stato in grado di installare correttamente il modulo utilizzando pip. (Questo è probabilmente preferibile all'uso della versione Cygwin di PostgreSQL, poiché la versione nativa funzionerà molto più velocemente).


2

Su Fedora 24: per Python 3.x

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

Attiva il tuo ambiente virtuale:

pip install psycopg2

2

Psycopg2 dipende dalle librerie di Postgres. Su Ubuntu puoi usare:

apt-get install libpq-dev

Poi:

pip install psycopg2

Non è una buona pratica mescolare pacchetti pip e pacchetti apt-get.
wswld,

1

Per gli umili utenti Windows erano bloccati a dover installare psycopg2 dal link in basso, basta installarlo su qualsiasi installazione Python che hai impostato. Inserirà la cartella denominata "psycopg2" nella cartella dei pacchetti del sito dell'installazione di Python.

Dopodiché, copia quella cartella nella directory dei pacchetti del sito di virtualenv e non avrai problemi.

ecco il link che puoi trovare nell'eseguibile per installare psycopg2

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


ho provato questo e ottengo psycopg2-2.6-cp34-none-win_amd64.whl non è una ruota supportata su questa piattaforma.
jayeshkv,

1

Su OpenSUSE 13.2, questo è stato risolto:

sudo zypper in postgresql-devel 

1

Potrei installarlo su una macchina Windows e usare Anaconda / Spyder con Python 2.7 attraverso i seguenti comandi:

 !pip install psycopg2

Quindi per stabilire la connessione al database:

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

Ho funzionato con il database elencato in psql -l, host localhost, porta predefinita del database 5432, utente elencato con \duuna volta entrato in psql e indovinando la password.
Harry Moreno,

1

Nelle distribuzioni di base Arch :

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


0

Su Ubuntu avevo solo bisogno del pacchetto dev postgres:

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

* Testato in virtualenv


0

Su OSX 10.11.6 (El Capitan)

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

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

Su OS X 10.14, questo è stato molto impegnativo. Vedere soluzione dettagliata qui: stackoverflow.com/a/57014480/2162844
Bisonbleu

0

Su OSX con macports:

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

0

Stavo avendo questo problema, il motivo principale era con 2 versioni uguali installate. Uno di postgres.app e uno di HomeBrew.

Se scegli di conservare solo l'APP:

brew unlink postgresql
pip3 install psycopg2

0

Su macOS Mojave assicurati di avere l'ultimo aggiornamento con Command Line Tools 10.3 - che ha funzionato per me - lo hai aggiornato con Aggiornamento Software, la versione precedente di Command Line Tools su Mojave non funzionava per me.


-1

Prova questo in Gentoo:

emerge dev-libs/libpqxx

-2

Su Windows funziona così
Al prompt dei comandi dopo aver installato il pallone tramite pip in ambiente virtuale, eseguire questo comando

>pip install psycopg2

Controlla questo

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.