Comment installer psycopg2 avec "pip" sur Python?

506

J'utilise virtualenvet j'ai besoin d'installer "psycopg2".

J'ai fait ce qui suit:

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

Et j'ai les messages suivants:

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

Ma question, je dois seulement faire cela pour que le psycopg2 fonctionne?

python setup.py build_ext --pg-config /path/to/pg_config build ...
André
la source
3
Cela a-t-il fonctionné lorsque vous avez essayé python setup.py build_ext --pg-config / path / to / pg_config build ... ??
lajarre
2
Pour python 3.4 ou python 3.5, vous devez installer le package de développement de la verion correspondante comme sudo apt install libpq-dev python3.4-devousudo apt install libpq-dev python3.5-dev
Avinash Raj

Réponses:

810

Remarque : depuis un certain temps, il existe des roues binaires pour Windows dans PyPI, donc cela ne devrait plus être un problème pour les utilisateurs de Windows. Vous trouverez ci-dessous des solutions pour les utilisateurs de Linux et Mac, car beaucoup d'entre eux trouvent ce message grâce à des recherches sur le Web.


Option 1

Installez le psycopg2-binarypackage PyPI à la place, il a des roues Python pour Linux et Mac OS.

pip install psycopg2-binary

Option 2

Installez les prérequis pour construire le psycopg2package à partir de la source:

Debian / Ubuntu

Python 3

sudo apt install libpq-dev python3-dev

Vous pourriez avoir besoin d'installer python3.8-devou similaire pour par exemple Python 3.8.

Python 2 1

sudo apt install libpq-dev python-dev

Si cela ne suffit pas, essayez

sudo apt install build-essential

ou

sudo apt install postgresql-server-dev-all

avant de réinstaller psycopg2.

CentOS 6

Voir la réponse de Banjer


1 Vraiment? C'est 2020

joar
la source
7
11.04: erreurs différentes, même solution. Adorez les versions dev!
I159
5
@ I159 - Les *-devpackages contiennent les fichiers nécessaires pour compiler une application à partir de la source qui utilise les fonctions fournies par la bibliothèque (comme psycopg2utilise les bibliothèques libpqet python, entre autres).
joar
21
J'utilise Ubuntu 12.04 LTS, et je devais aussisudo apt-get install postgresql-server-dev-all
caleb
4
Quelqu'un pourrait-il expliquer pourquoi pas seulement le répertoire contenant pg_config dans le PATH (ou utiliser --pg-config)?
lajarre
5
Si vous êtes ici parce que vous rencontrez des problèmes pour installer psycopg2 dans le conteneur python 3 Celery de Dockerhub, vous devrez également installer build-essential avecsudo apt-get install -y build-essential
derrend
118

Sur CentOS, vous avez besoin des packages de développement postgres:

sudo yum install python-devel postgresql-devel

C'était au moins la solution sur CentOS 6.

Banjer
la source
1
Ce n'est pas seulement CentOS, je pense. psycopg a des dépendances natives, donc pour construire à partir de la source (ce que fait pip), les bibliothèques de développement de PostgreSQL doivent être là. (Les en-têtes C, peut-être? Je ne sais pas grand-chose sur la compilation de code natif.)
jpmc26
3
Je suis d'accord que cela résout le problème sur CentOS 6. Je voudrais ajouter que j'ai dû ajouter /usr/pgsql-9.3/bin à $ PATH. Voici un article donnant un exemple de la façon de procéder. serverfault.com/questions/102932/…
Ryder Brooks
Pour CentOS 7 et Python 3.4, j'ai dû installer "python34-devel". Ma réponse à une question connexe: stackoverflow.com/a/42370489/26219
Mark Edington
A travaillé sur AWS EC2, avec Amazon Linux / 2.5.1 64 bits basé sur RHEL
Ben Wheeler
Pour Python3 dans Fedora, utilisez sudo yum install python36-devel(remplacez 36 par votre version de Python 3).
LoMaPh
85

Sur Mac Mavericks avec Postgres.app version 9.3.2.0 RC2, je devais utiliser le code suivant après l'installation de Postgres:

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

metasequoia
la source
sudo PATH = $ PATH: /Applications/Postgres93.app/Contents/MacOS/bin pip install psycopg2 [en date du 5 avril 2014]
user798719
2
si vous utilisez virtualenv, vous n'avez pas besoin de 'sudo' alors activez votre virtualenv et exécutez 'PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.3/bin pip install psycopg2'
elin3t
3
Mon cas OS X Ver 10.9.4: sudo PATH = $ PATH: /Library/PostgreSQL/9.2/bin pip install psycopg2
emecas
3
Oui, cela a aussi fonctionné pour moi. Après avoir installé PostgreSQL, j'ai dû définir mon chemin en le faisant PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2.
iamfrancisyo
4
Utilisez la dernière version: PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/latest/bin pip install psycopg2
Diego Sarmiento
80

si vous êtes sur un mac, vous pouvez utiliser l'homebrew

brew install postgresql

Et toutes les autres options sont ici: http://www.postgresql.org/download/macosx/

Bonne chance

nichochar
la source
2
la réponse de nichochar et la réponse d'attomos (installer postgresql et modifier le chemin) ont résolu le problème pour moi. la façon la plus simple de modifier le chemin est d'exécuter "sudo nano / etc / path" à partir de votre terminal.
tbradley22
2
Merci pour ça. J'étais sur le point de devenir fou avant de trouver ça!
Leo C Han
1
A fonctionné pour moi aussi, pas besoin de singe avec mon chemin (et généralement, je ne recommanderais pas sudo ici - vous devriez pouvoir le faire dans l'espace utilisateur).
duozmo
Cela n'installe pas le postgresql virtualenvcomme l'OP l'a demandé.
Jorge Leitao
Je ne pense pas qu'OP voulait nécessairement des postgres dans virtualenv. Il a dit qu'il utilisait virtualenv. Je pense qu'il a mal compris que postgresql est un plus gros service qu'une simple bibliothèque python.
nichochar
61

J'ai récemment configuré psycopg2 sur une machine Windows. L'installation la plus simple consiste à utiliser un binaire exécutable Windows. Vous pouvez le trouver sur http://stickpeople.com/projects/python/win-psycopg/ .

Pour installer le binaire natif dans un environnement virtuel, utilisez easy_install:

C:\virtualenv\Scripts\> activate.bat
(virtualenv) C:\virtualenv\Scripts\> easy_install psycopg2-2.5.win32-py2.7-pg9.2.4-release.exe
Praveen Gollakota
la source
3
Merci pour la réponse. Mais je dois installer dans un environnement virtuel. Best Regard,
André
4
Cette astuce (avec la permission de Ned Batchelder) m'a aidé dans le passé à installer des binaires vers un virtualenv
Praveen Gollakota
13
Existe-t-il vraiment aucun moyen de faire fonctionner "pip install psycopg2" sous Windows? Même si un patch pour psycopg2 est nécessaire, cela en vaudrait la peine.
slacy
1
J'ai eu cette erreur lorsque postgres n'a pas été installé sur ma machine - J'ai installé postgres et l'erreur a disparu ...
Sam Joseph
2
le lien stickpeople discute également d'env virtuel et pointe vers une version d'installation de pip github.com/nwcell/psycopg2-windows
seanv507
27

Pour Python 3, vous devez utiliser sudo apt-get install libpq-dev python3-devsous Debian.

André
la source
27

C'est ce qui a fonctionné pour moi (sur RHEL, CentOS:

sudo yum install postgresql postgresql-devel python-devel

Et maintenant, incluez le chemin vers votre répertoire binaire postgresql avec votre installation pip:

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

Assurez-vous d'inclure le chemin correct. C'est tout :)

MISE À JOUR: Pour python 3, veuillez installer python3-develau lieu depython-devel

radtek
la source
Notez que je n'avais pas besoin de mettre à jour la variable d'environnement PATH.
sinistre
Vous ne devriez pas avoir à le faire si vous rechargez votre session de terminal.
radtek
Merci beaucoup.
Jorge Vidinha
Si vous utilisez Python 3, vous devrez installer des packages de développement Python numérotés. Voir: stackoverflow.com/a/42370489/26219
Mark Edington
21

Si vous utilisez Mac OS, vous devez installer PostgreSQL depuis la source. Une fois l'installation terminée, vous devez ajouter ce chemin à l'aide de:

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

ou vous pouvez ajouter le chemin comme ceci:

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

dans votre .profiledossier ou.zshrc fichier.

Cela peut varier selon le système d'exploitation.

Vous pouvez suivre le processus d'installation à partir de http://www.thegeekstuff.com/2009/04/linux-postgresql-install-and-configure-from-source/

attomos
la source
1
Pourquoi de la source au lieu de Homebrew?
duozmo
@duozmo, il a été répondu en 2012 et je crois que j'ai essayé de l'installer avec Homebrew à ce moment-là, mais il a échoué. Maintenant, j'ai installé PostgreSQL en utilisant Homebrew sans aucun problème.
attomos
17

Jusqu'à présent, les réponses ressemblent trop à des recettes magiques. L'erreur que vous avez reçue vous indique que pip ne peut pas trouver une partie nécessaire de la bibliothèque de requêtes PostgreSQL. C'est peut-être parce que vous l'avez installé dans un endroit non standard pour votre système d'exploitation, c'est pourquoi le message suggère d'utiliser l'option --pg-config.

Mais une raison plus courante est que vous n'avez pas du tout installé libpq. Cela se produit généralement sur les machines sur lesquelles vous n'avez PAS de serveur PostgreSQL installé, car vous souhaitez uniquement exécuter les applications clientes, pas le serveur lui-même. Chaque OS / distribution est différent, par exemple sur Debian / Ubuntu, vous devez installer libpq-dev. Cela vous permet de compiler et de lier du code à la bibliothèque de requêtes PostgreSQL.

La plupart des réponses suggèrent également d'installer une bibliothèque de développement Python. Faites attention. Si vous utilisez uniquement le Python par défaut installé par votre distribution, cela fonctionnera, mais si vous avez une version plus récente, cela pourrait causer des problèmes. Si vous avez construit Python sur cette machine, vous disposez déjà des bibliothèques de développement nécessaires pour compiler les bibliothèques C / C ++ pour interfacer avec Python. Tant que vous utilisez la bonne version de pip, celle installée dans le même dossier bin que le binaire python, alors vous êtes tous définis. Pas besoin d'installer l'ancienne version.

Michael Dillon
la source
1
Et à propos d'Os x? Je veux dire, est basé sur Unix mais je pense que cela peut être différent.
Lara
13

Sur Debian/Ubuntu :

D'abord installer et construire les dépendances du psycopg2paquet:

# apt-get build-dep python-psycopg2

Ensuite, dans votre environnement virtuel, compilez et installez le psycopg2module:

(env)$ pip install psycopg2
Omid Raha
la source
6

J'ai déjà fait cela où, dans Windows, vous installez d'abord dans votre installation de base de python.

Ensuite, vous manuellement copiez le psycopg2 installé dans l'installation de virtualenv.

Ce n'est pas joli, mais ça marche.

monkut
la source
2
pouvez-vous élaborer s'il vous plaît. Où obtenez-vous le psycopg2 en premier lieu?
Saher Ahwal
2
les binaires Windows sont disponibles sur stickpeople.com/projects/python/win-psycopg
monkut
Je l'ai également fait, après des jours épuisants et toutes les autres options décrites en ligne. Je suis toujours abasourdi quant à ce qui l'empêchait d'être installé avec pip venv. J'ai pu installer en dehors de l'environnement virtuel, aucun problème. J'ai ensuite littéralement copié ce fichier à partir de mon répertoire de bibliothèque de packages Python et collé dans le même dans le venv. Mon intuition est que, parce que ma (mes) version (s) de Python sont des distributions Anaconda, qu'il y avait quelque chose de mal avec le chemin qui était supposé / utilisé.
kuanb
5

Outre l'installation des packages requis, j'avais également besoin d'ajouter manuellement le répertoire bin PostgreSQL à PATH.
$vi ~/.bash_profile
Ajoutez PATH=/usr/pgsql-9.2/bin:$PATHavant export PATH.
$source ~/.bash_profile
$pip install psycopg2

xtranophile
la source
Une idée pourquoi cela ne se retrouve pas dans le chemin par défaut?
Bret
1
J'ai eu une erreur comme ça comment rectifier ceci, aidez-moi !!! Commande "/ usr / bin / python -c" import setuptools, tokenize; __ file __ = '/ private / tmp / pip-build-AUbwwG / psycopg2 / setup.py'; exec (compile (getattr (tokenize, 'open', open ) ( fichier ) .read (). replace ('\ r \ n', '\ n'), fichier , 'exec')) "install --record /tmp/pip-44Va05-record/install-record.txt --single-version-externally-managed --compile "a échoué avec le code d'erreur 1 dans / private / tmp / pip-build-AUbwwG / psycopg2
vijay
3

Sur Windows XP, vous obtenez cette erreur si postgres n'est pas installé ...

Sam Joseph
la source
êtes-vous sûr que c'est vrai? J'ai installé postgres sur ma machine Windows et je l'obtiens toujours. ?
Saher Ahwal
2
Pourquoi n'ont-ils pas cela sur leur site comme pré-requis pour avoir des postgres?
Saher Ahwal
3

J'ai installé Postgresql92 en utilisant le référentiel RedHat / CentOS sur le site de téléchargements de PG http://www.postgresql.org/download/linux/redhat/

Pour obtenir pg_config, j'ai dû ajouter /usr/pgsql-9.2/bin à PATH.

joedborg
la source
3

Avant de pouvoir installer psycopg2, vous devez installer le package python-dev.

Si vous travaillez à partir de Linux (et peut-être d'autres systèmes mais je ne peux pas parler d'expérience), vous devrez vous assurer d'être assez précis sur la version de python que vous exécutez lors de l'installation du package de développement.

Par exemple, lorsque j'ai utilisé la commande:

sudo apt-get install python3-dev

J'ai quand même rencontré la même erreur en essayant de

pip install psycopg2

Comme j'utilise python 3.7, j'avais besoin d'utiliser la commande

sudo apt-get install python3.7-dev

Une fois que j'ai fait cela, je n'ai plus rencontré de problèmes. Évidemment, si vous utilisez la version 3.5 de python, vous changeriez ce 7 en 5.

Gino
la source
2
Cela devrait être la réponse, sudo apt-get install python-x.x-devrésolu le problème.
Arbazz Hussain
2

Je me bats avec cela depuis des jours et j'ai finalement trouvé comment exécuter la commande "pip install psycopg2" dans un virtualenv sous Windows (exécutant Cygwin).

Je frappais le "exécutable pg_config introuvable." erreur, mais j'avais déjà téléchargé et installé postgres dans Windows. Il a également été installé à Cygwin; exécuter "quel pg_config" dans Cygwin a donné "/ usr / bin / pg_config", et exécuter "pg_config" a donné une sortie saine - cependant la version installée avec Cygwin est:

VERSION = PostgreSQL 8.2.11

Cela ne fonctionnera pas avec la version actuelle de psycopg2, qui semble nécessiter au moins 9.1. Lorsque j'ai ajouté "c: \ Program Files \ PostgreSQL \ 9.2 \ bin" à mon chemin Windows, le programme d'installation de Cygwin pip a pu trouver la version correcte de PostgreSQL, et j'ai réussi à installer le module à l'aide de pip. (De toute façon, c'est préférable à la version Cygwin de PostgreSQL, car la version native fonctionnera beaucoup plus rapidement).

Symétrique
la source
2

Sur Fedora 24: pour Python 3.x

sudo dnf install postgresql-devel python3-devel

sudo dnf install redhat-rpm-config

Activez votre environnement virtuel:

pip install psycopg2
Rajkumar R
la source
2

Psycopg2 dépend des bibliothèques Postgres. Sur Ubuntu Vous pouvez utiliser:

apt-get install libpq-dev

Alors:

pip install psycopg2
Manish Gupta
la source
Ce n'est pas une bonne pratique de mélanger les packages pip et les packages apt-get.
wswld
1

Pour les utilisateurs modestes de Windows, il était nécessaire d'installer psycopg2 à partir du lien ci-dessous, installez-le simplement dans l'installation Python que vous avez configurée. Il placera le dossier nommé "psycopg2" dans le dossier site-packages de votre installation python.

Après cela, copiez simplement ce dossier dans le répertoire site-packages de votre virtualenv et vous n'aurez aucun problème.

voici le lien que vous pouvez trouver l'exécutable pour installer psycopg2

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

Chris Hawkes
la source
j'ai essayé cela et j'obtiens psycopg2-2.6-cp34-none-win_amd64.whl n'est pas une roue prise en charge sur cette plate-forme.
jayeshkv
1

Sur OpenSUSE 13.2, cela l'a corrigé:

sudo zypper in postgresql-devel 
Elliott
la source
1

Je pourrais l'installer dans une machine Windows et utiliser Anaconda / Spyder avec python 2.7 via les commandes suivantes:

 !pip install psycopg2

Puis pour établir la connexion à la base de données:

 import psycopg2
 conn = psycopg2.connect(dbname='dbname',host='host_name',port='port_number', user='user_name', password='password')
Cristian Muñoz
la source
J'ai obtenu ce travail avec la base de données répertoriée dans psql -l, l'hôte localhost, le port de base de données par défaut 5432, l'utilisateur répertorié avec \duune fois que vous entrez dans psql et devinez le mot de passe.
Harry Moreno
1

Dans les distributions de base Arch :

sudo pacman -S python-psycopg2
pip2 install psycopg2  # Use pip or pip3 to python3
iraj jelodari
la source
0

Sur Ubuntu, j'avais juste besoin du paquet dev de postgres:

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

* Testé dans un virtualenv

marcanuy
la source
0

Sur OSX 10.11.6 (El Capitan)

brew install postgresql
PATH=$PATH:/Library/PostgreSQL/9.4/bin pip install psycopg2
iNoob
la source
Sur OSX 10.12.3 (Sierra):brew install postgresql PATH=$PATH:/usr/local/Cellar/postgresql/9.6.2/bin/ pip install psycopg2
ishandutta2007
Sous OS X 10.14, cela s'est avéré très difficile. Voir la solution détaillée ici: stackoverflow.com/a/57014480/2162844
Bisonbleu
0

Sur OSX avec macports:

sudo port install postgresql96
export PATH=/opt/local/lib/postgresql96/bin:$PATH
Palimpseste
la source
0

J'avais ce problème, la raison principale était que 2 versions égales étaient installées. Un par postgres.app et un par HomeBrew.

Si vous choisissez de ne conserver que l'APP:

brew unlink postgresql
pip3 install psycopg2
Luís De Marchi
la source
0

Sur macOS Mojave, assurez-vous que la dernière mise à jour avec les outils de ligne de commande 10.3 - qui a fonctionné pour moi - l'a mise à jour avec la mise à jour logicielle, la version précédente des outils de ligne de commande sur Mojave ne fonctionnait pas pour moi.

Radek
la source
-1

Essayez ceci dans Gentoo:

emerge dev-libs/libpqxx
tokhi
la source
-2

Sous Windows, voici comment cela fonctionne.
À l'invite de commande après avoir installé le flacon via pip dans un environnement virtuel, exécutez cette commande

>pip install psycopg2

Vérifiez ceci

Tessaracter
la source