exécutable pg_config introuvable

771

J'ai du mal à installer psycopg2. J'obtiens l'erreur suivante lorsque j'essaie de pip install psycopg2:

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 in /tmp/pip-build/psycopg2

Mais le problème pg_configest en fait dans mon PATH; il fonctionne sans aucun problème:

$ which pg_config
/usr/pgsql-9.1/bin/pg_config

J'ai essayé d'ajouter le chemin pg_config au setup.cfgfichier et de le construire en utilisant les fichiers source que j'ai téléchargés depuis leur site Web ( http://initd.org/psycopg/ ) et j'obtiens le message d'erreur suivant!

Error: Unable to find 'pg_config' file in '/usr/pgsql-9.1/bin/'

Mais c'est en fait là !!!

Je suis déconcerté par ces erreurs. Quelqu'un peut-il aider s'il vous plaît?

Au fait, j'ai sudotoutes les commandes. Je suis également sur RHEL 5.5.

user1448207
la source
8
Lorsque vous exécutez des commandes en tant que sudo, $PATHest modifié. Pouvez-vous vérifier votre $ PATH en tant que root?
Hugo Tavares
1
Dans mon cas, je cours ln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_configet tout va bien!
CK.Nguyen
Merci @ CK.Nguyen, votre conseil a vraiment fonctionné pour moi.
pratibha

Réponses:

766

pg_configest dans postgresql-devel( libpq-devdans Debian / Ubuntu, libpq-develsur Centos / Cygwin / Babun.)

TilmanBaumann
la source
66
Résolu après l'installation libpq-devsur Ubuntu Lucid (10.04). Merci d'avance.
Pylover
22
pg_configde postgress.app est à /Applications/Postgres.app/Contents/Versions/<your version>/bin(Mac OS X)
Tim Daubenschütz
17
C'est libpqxx-develsur Fedora.
robsn
55
sudo apt-get install libpq-deva travaillé pour moi sur Ubuntu
Bill Cheatham
48
sur Alpine Linux: apk add postgresql-dev
RJ
385

Sur Mac OS X, je l'ai résolu en utilisant le gestionnaire de paquets homebrew

brew install postgresql
azalée
la source
29
Excellent! Cela a résolu le problème pour moi, mais les débutants doivent savoir que vous devez d'abord installer le gestionnaire de packages Homebrew pour que la brewcommande fonctionne.
seane
A également fonctionné pour moi, même si j'ai effectué l'installation de la préparation après l'installation de pgadmin.
Khanal
8
Cela n'installe-t-il pas la base de données entière?
zmbq
3
J'ai besoin d'extrabrew link postgresql
vincentlcy
1
Pour ajouter au commentaire de @ seane, utilisez cette procédure pas à pas pour installer homebrew.
Bruce Wayne
236

Avez-vous installé python-dev? Si vous l'avez déjà fait, essayez également d'installerlibpq-dev

sudo apt-get install libpq-dev python-dev

De l'article: Comment installer psycopg2 sous virtualenv

thegauraw
la source
Dans mon ordinateur, j'installe uniquement le client de Postgresql, de sorte que vous devez installer le libpq-dev et le python-dev.
bnPYSse
2
Douteux que python-dev soit nécessaire.
juanitogan
cela m'a aidé.Merci
Arun
4
python3-dev est nécessaire. Sans cela, je reçoisPython.h: No such file or directory
krubo
1
une dépendance supplémentaire requise pour cela estapt-get install -y gcc
Anum Sheraz
75

Aussi sur OSX. Postgress.app installé depuis http://postgresapp.com/ mais a eu le même problème.

J'ai trouvé pg_configdans le contenu de cette application et j'ai ajouté le répertoire à $PATH.

C'était à /Applications/Postgres.app/Contents/Versions/latest/bin. Donc , cela a fonctionné: export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH".

Tayler
la source
3
@GianlucaLodigiani vous pouvez également le faire si vous ne voulez pas redémarrer la consolePATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2
Bernardo Duarte
46

En alpin, la bibliothèque contenant pg_configest postgresql-dev. Pour installer, exécutez:

apk add postgresql-dev
rkoval
la source
38

C'est ce qui a fonctionné pour moi sur CentOS, première installation:

sudo yum install postgresql postgresql-devel python-devel

Sur Ubuntu, utilisez simplement les paquets apt-get équivalents.

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

Et maintenant incluez le chemin vers votre répertoire binaire postgresql avec votre installation pip, cela devrait fonctionner pour Debain ou Linux basé sur RHEL:

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

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

radtek
la source
1
Sur Ubuntu, c'est sudo apt-get install postgresql postgresql-dev python-dev, et cela a fonctionné pour moi.
modulitos
2
fonctionne également sur Amazon Linux AMI à partir de décembre 2016. Assurez gcc- vous également qu'il est installé et python3-devel.
villasv
Merci!!! Cela a également fonctionné sur Fedora 32 Workstation!
Marcelo Gazzola
37
apt-get build-dep python-psycopg2
matiu
la source
34

Vous devez ajouter les exigences python utilisées dans Postgres sur Ubuntu. Courir:

sudo apt-get install libpq-dev python-dev
Kishore Bhosale
la source
32

Pour résumer, j'ai également rencontré exactement le même problème. Après avoir lu beaucoup de publications stackoverflow et de blogs en ligne, la solution finale qui a fonctionné pour moi est la suivante:

1) PostgreSQL (développement ou toute version stable) doit être installé avant d'installer psycopg2.

2) Le fichier pg_config (ce fichier réside normalement dans le dossier bin du dossier d'installation de PostgreSQL) PATH devait être explicitement configuré avant d'installer psycopg2. Dans mon cas, le CHEMIN d'installation pour PostgreSQL est:

/opt/local/lib/postgresql91/

ainsi afin de définir explicitement le CHEMIN du fichier pg_config, j'ai entré la commande suivante dans mon terminal:

PATH=$PATH:/opt/local/lib/postgresql91/bin/

Cette commande garantit que lorsque vous essayez d'installer pip psycopg2, elle trouvera automatiquement le CHEMIN vers pg_config cette fois.

J'ai également publié une erreur complète avec trace et sa solution sur mon blog que vous voudrez peut-être consulter. C'est pour Mac OS X, mais le problème pg_config PATH est générique et s'applique également à Linux.

Ali Raza Bhayani
la source
6
pour moi sur OS X, le chemin ressemblait à ceciPATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
andilabs
@andi Oui, le chemin d'installation de Postgres peut différer mais la recette d'installation de psycopg2 que j'ai mentionnée ci-dessus reste la même. J'espère que cela a aidé.
Ali Raza Bhayani
30

sudo apt-get install libpq-dev fonctionne pour moi sur Ubuntu 15.4

novasaint
la source
Si vous utilisez Ubuntu plus récent, utilisez toujours les instructions d'installation susmentionnées. Voir pg_config
palik
23

Sur Linux, Mint a sudo apt-get install libpq-devfonctionné pour moi.

mthecreator
la source
21

Vous pouvez installer des binaires précompilés sur n'importe quelle plateforme avec pipou conda:

python -m pip install psycopg2-binary

ou

conda install psycopg2

Veuillez noter que la page psycopg2-binary pypi recommande de construire à partir de la source en production:

Le package binaire est un choix pratique pour le développement et les tests mais en production, il est conseillé d'utiliser le package construit à partir de sources

Pour utiliser le package construit à partir des sources, utilisez python -m pip install psycopg2. Ce processus nécessitera plusieurs dépendances ( documentation ) (soulignement le mien):

  • Compilateur AC .
  • Les fichiers d'en-tête Python . Ils sont généralement installés dans un package tel que python-dev . Un message tel qu'une erreur: Python.h: aucun fichier ou répertoire de ce type n'est une indication que les en-têtes Python sont manquants.
  • Les fichiers d'en-tête libpq . Ils sont généralement installés dans un package tel que libpq-dev . Si vous obtenez une erreur: libpq-fe.h: Aucun fichier ou répertoire de ce type ne vous manque.
  • Le programme pg_config : il est généralement installé par le paquet libpq-dev mais parfois il ne se trouve pas dans un répertoire PATH. Le faire dans le PATH rationalise considérablement l'installation, alors essayez d'exécuter pg_config --version: s'il renvoie une erreur ou un numéro de version inattendu, recherchez le répertoire contenant le pg_config livré avec la bonne version de libpq (généralement / usr / lib / postgresql / XY / bin /) et ajoutez-le au $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH CHEMIN : Vous n'avez besoin que de pg_config pour compiler psycopg2, pas pour son utilisation régulière.
jakub
la source
Sur Ubuntu, j'avais d'abord besoin d'installer la bibliothèque libpq-dev, puis d'exécuter à nouveau la commande pip install:apt install libpq-dev
Benjamin
20

MISE À JOUR /etc/yum.repos.d/CentOS-Base.repo, sections [de base] et [mises à jour]
AJOUTER exclure = postgresql *

curl -O http://yum.postgresql.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpmr  
rpm -ivh pgdg-centos91-9.1-4.noarch.rpm

yum install postgresql  
yum install postgresql-devel

PATH=$PATH:/usr/pgsql-9.1/bin/

pip install psycopg2
Mayank
la source
20

Pour ceux qui utilisent OS X, cette solution a fonctionné pour moi:

1) Installez Postgres.app:

http://www.postgresql.org/download/macosx/

2) Ouvrez ensuite le terminal et exécutez cette commande, en remplaçant où il est indiqué {{version}} par le numéro de version de Postgres:

export PATH = $ PATH: /Applications/Postgres.app/Contents/Versions / {{version}} / bin

par exemple

export PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/9.4/bin

Milo
la source
Ou créez un lien symbolique vers la dernière versionsudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Subin Sebastian
17

Essayez de l'ajouter à PATH:

PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2
Marboni
la source
-bash: cd: /usr/pgsql-x.x/bin/: No such file or directory
Pylover
@pylover, vous devez utiliser le chemin correct vers votre répertoire bin Postgres. Etes-vous sûr que /usr/pgsql-x.x/bin/c'est correct?
Marboni
Il suffirait également simplement d'ajouter le dossier où vivent tous les pg_fichiers importants . Pour postgres.app, ce chemin sur Mac OS X est /Applications/Postgres.app/Contents/Versions/9.3/bin. PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin Veuillez mettre à jour votre version * si une nouvelle version est sortie!
Tim Daubenschütz
Cela a fonctionné pour moi sur OS X El Capitan:PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
David Hariri
16

La solution d'Ali a fonctionné pour moi mais j'avais du mal à trouver l'emplacement du dossier bin. Un moyen rapide de trouver le chemin sur Mac OS X est d'ouvrir psql (il y a un lien rapide dans la barre de menu supérieure). Cela ouvrira une fenêtre de terminal séparée et sur la deuxième ligne, le chemin de votre installation Postgres apparaîtra comme suit:

My-MacBook-Pro:~ Me$ /Applications/Postgres93.app/Contents/MacOS/bin/psql ; exit;

Votre fichier pg_config se trouve dans ce dossier bin. Par conséquent, avant d'installer psycopg2, définissez le chemin du fichier pg_config:

PATH=$PATH:/Applications/Postgres93.app/Contents/MacOS/bin/

ou pour une version plus récente:

PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin

Installez ensuite psycopg2.

user2498172
la source
1
Les documents récents utilisent le chemin suivant:/Applications/Postgres.app/Contents/Versions/9.3/bin
jpimentel
Cela semble bouger. find /usr/local -name 'pg_config'
Praxeolitic
11

Vous devez mettre à jour votre pip avant d'installer psycopg2. Utilisez cette commande

pip install --upgrade pip
Aswin
la source
Une réponse plus détaillée pourrait être utile dans la plupart des cas.
bkausbk
11

Je vais laisser cela ici pour la prochaine âme malheureuse qui ne peut pas contourner ce problème malgré toutes les solutions fournies. Utilisez simplementsudo pip3 install psycopg2-binary

DuDoff
la source
Ça n'a pas marché pour moi. Je l' brew install postgresqlai seulement corrigé.
tsando
Vous devrez peut-être pip install psycopg2-binarypour moi: pip -> python2, pip3 -> python3. Mais tant que vous l'avez fait fonctionner, c'était l'une des nombreuses solutions!
DuDoff
9

Je viens de résoudre le problème dans Cent OS 7 en:

export PATH=$PATH:/usr/pgsql-9.5/bin

assurez-vous que votre version PostgreSql correspond à la bonne version ci-dessus.

Morfat Mosoti
la source
9

Sous Mac OS X et si vous utilisez l'application Postgres ( http://postgresapp.com/ ):

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

Pas besoin de spécifier la version de Postgres dans cette commande. Il sera toujours indiqué plus tard.

et fait

pip install psycopg2

PS: si les modifications ne reflètent pas, vous devrez peut-être redémarrer le terminal / invite de commande

La source

Dinesh Sunny
la source
8

Sur MacOS, la solution la plus simple sera de créer un lien symbolique vers le bon binaire, c'est-à-dire sous le package Postgres.

sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config

C'est assez inoffensif, et toutes les applications pourront l'utiliser à l'échelle du système, si nécessaire.

Subin Sebastian
la source
Fonctionne pour moi, n'a pas eu à sudo cependant. Je vous remercie!
John Ottenlips
Fonctionne pour moi en effet!
Hadnazzar
5

sudo yum install postgresql-devel (centos6X)

pip install psycopg2 == 2.5.2

user2387567
la source
5

Ici, pour être complet avec OS X: si vous installez PostgreSQL depuis MacPorts, pg_config sera dans /opt/local/lib/postgresql94/bin/pg_config .

Lorsque vous avez installé MacPorts, il a déjà ajouté /opt/local/bin à votre PATH.

Ainsi, cela résoudra le problème: $ sudo ln -s /opt/local/lib/postgresql94/bin/pg_config /opt/local/bin/pg_config

Maintenant, pip install psycopg2il pourra fonctionner pg_configsans problème.

Gabi
la source
4

Pour ceux sur macOS Catalina utilisant le zshshell qui ont également installé l' application postgres :

Ouvrez votre ~/.zshrcfichier et ajoutez la ligne suivante:

export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"

Fermez ensuite tous vos terminaux, rouvrez-les et vous aurez résolu votre problème.

Si vous ne souhaitez pas fermer vos terminaux, entrez simplement le source ~/.zshrcterminal sur lequel vous souhaitez continuer à travailler.

qarthandso
la source
Cela a fonctionné pour moi sur MacOS et zshshell!
Aditya Rao
4

Pour les utilisateurs de mac, étendez votre variable path pour inclure PostgreSQL comme ceci export PATH=$PATH:/Library/PostgreSQL/12/bin.

Uzzi Emuchay
la source
3

Voici comment j'ai réussi à installer psycopg2

$ wget http://initd.org/psycopg/tarballs/PSYCOPG-2-5/psycopg2-2.5.3.tar.gz
$ tar -xzf psycopg2-2.5.3.tar.gz
$ cd psycopg2-2.5.3
$ pip install .
TomNg
la source
2

Je suis sûr que vous avez rencontré le même "problème" que moi, donc je vais vous proposer la solution extrêmement simple ...

Dans votre cas, le chemin réel que vous devez ajouter à $ PATH (ou en tant que paramètre de commande) est:

/usr/pgsql-9.1/bin/pg_config

ne pas

/usr/pgsql-9.1/bin

Par exemple, si vous exécutez le script setup.py python par la suite, vous l'exécuterez comme ceci:

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build

Probablement trop tard, mais toujours la solution la plus simple.

MODIFICATION PLUS TARD:

Sous un test supplémentaire, j'ai découvert que si vous ajoutez initialement le chemin d'accès à pg_config dans le formulaire

/usr/pgsql-9.1/bin

(sans / pg_config après ..... / bin) et exécutez la commande pip install, cela fonctionnera.

Cependant, si vous décidez ensuite de suivre l'indication pour exécuter python setup.py, vous devrez spécifier le chemin avec / pg_config après ..... / bin, c'est-à-dire

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build
BogdanSorlea
la source
Une alternative à l'ajout du répertoire pgsql / bin au PATH que j'ai utilisé un peu est de créer un lien symbolique /usr/pgsql-9.6/bin/pg_config(ou tout autre nom sur votre système) /usr/bin/pg_config- de cette façon, il est disponible dans le PATH que vous avez déjà.
Ralph Bolton
2

pour CentOS / RedHat assurez-vous qu'il /etc/alternatives/pgsql-pg_configs'agit d'un lien symbolique non rompu

Hedde van der Heide
la source