web-dev-qa-db-fra.com

Mac + virtualenv + pip + postgresql = Erreur: fichier exécutable pg_config introuvable

J'essayais d'installer postgres pour un tutoriel, mais pip me donne une erreur:

pip install psycopg

Une petite erreur je reçois:

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

Où se trouve pg_config dans ma virtualenv? Comment le configurer? J'utilise virtualenv car je ne souhaite pas installer postgres à l'échelle du système.

72
Karan Goel

Sur Mac, si vous utilisez Postgres.app , le fichier pg_config se trouve dans votre /Applications/Postgres.app/Contents/Versions/<current_version>/bin répertoire. Cela devra être ajouté à votre chemin système pour corriger cette erreur, comme ceci:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/<current_version>/bin

Ainsi, par exemple, si la version actuelle de Postgres.app est la 9.5, cette ligne d’exportation serait:

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

Avec les versions plus récentes du fichier Postgres.app (> 9.5?), Vous pouvez simplement ajouter "latest" à la place du numéro de version, comme suit:

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

Sur Mac, la solution consiste à installer postgresql:

brew install postgresql

Sur CentOS, la solution consiste à installer postgresql-devel:

Sudo yum install postgresql-devel

pg_config est dans postgresql-devel paquet

82
Mingyu

Je suis tout à fait d’accord avec john hight que la plupart des réponses postées sont totalement hors propos en supposant que le PO a exactement besoin d’utiliser virtualenv .

Pour moi, la réponse consistait à exécuter la commande suivante dans Prompt après avoir activé virtualenv:

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

(notez que la partie 9.4 représente la version et peut varier)

ou si vous souhaitez utiliser la dernière version de Postgres installée:

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

et alors:

pip install psycopg2

va supposer que vous avez installé postgres. Et si non, alors rappelez-vous que la meilleure solution recommandée consiste à utiliser: Postgres.app

28
andilabs

N'oubliez pas que votre variable $ PATH dans l'environnement virtuel! = Votre variable globale $ PATH. Vous pouvez le confirmer avec 'echo $ PATH' dans votre virtualenv et également dans un nouveau shell. Ainsi, à moins que vous ne souhaitiez installer PostgreSQL en tant qu’instance unique dans votre environnement virtuel (cela ne vaut pas la peine de le faire, imo), vous devrez modifier la variable $ PATH dans virtualenv pour inclure le chemin de votre installation globale (qui Résolvez l’erreur manquante pg_config).

Voici les étapes:

1.) Dans un nouveau shell, tapez 'quel pg_config'. Cela retournera le chemin. Copiez le. Dans mon cas, le chemin ressemblait à ceci: /Applications/Postgres.app/Contents/Versions/9.3/bin

2.) De retour dans votre shell virtualenv, tapez 'export PATH =/your-path-to-pg_config: $ PATH'

3.) Puis, toujours dans le virtualenv, 'pip install psycopg2'

Si tout se déroule comme prévu, psycopg2 sera installé dans l'environnement virtuel, mais l'installation se référera à votre installation Global PostgreSQL. Dans mon cas, cette installation globale a été installée via Postgres.App, d’où le chemin. Je préfère cette méthode de travail avec psycopg2 car cela signifie que je peux utiliser la base de données facilement dans n'importe quel virtualenv plutôt que seulement dans l'environnement virtuel défini.

J'espère que cela aide tous ceux qui arrivent ici. Pour Google Jus, voici le langage d'erreur explicite (et vague) renvoyé lorsque vous rencontrez ce problème:
Commande python setup.py Egg_info a échoué avec le code d'erreur 1

17
Kevin Dalias

Voici comment j'ai pu résoudre ce problème sur mon Mac (OSX 10.9):

brew update
brew install --force ossp-uuid
brew install postgresql
pip install psycopg

J'ai eu une erreur de CLANG quand j'ai essayé pip install psycopg (un problème avec LLVM 5.1 ), j’ai donc dû installer psycopg avec cette commande:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg

C'est similaire à la solution de Mingy , mais il y a suffisamment de différences pour que je pense que cela valait la peine d'être partagé.

10
mrgnw

Cette erreur survient lorsque les outils de génération ne peuvent pas trouver les bibliothèques Postgresql.

Il est souvent nécessaire de dire à psycopg2 comment trouver le binaire pg_config. Vous pouvez:

  1. ajoutez le chemin d'accès à pg_config dans votre chemin d'accès Shell (/ usr/local/pgsql/bin /)

  2. ou modifiez le fichier setup.cfg dans le dossier source psycopg2 et indiquez le chemin complet de pg_config sur la ligne commençant par pg_config =

pg_config =/usr/local/pgsql/bin/pg_config

  • ce qui précède est un exemple, vous pouvez faire locate pg_config pour savoir où il réside, ou tapez simplement which pg_config et il devrait vous indiquer le chemin.

Moins souvent, l'erreur provient du fait que postgresql n'est pas installé sur votre système. Si tel est le cas, téléchargez et créez postgres, ou téléchargez un binaire psycopg2 pré-construit pour OS X.

5
l'L'l

Pour OS X El Captain (10.11.6) + brew + virtualenv + PostgreSQL 9.5:

Après avoir installé PostgreSQL 9.5:

brew install [email protected]

Ouvrez votre terminal et exécutez:

export PATH=$PATH:/usr/local/opt/postgresql\@9.5/bin/
pip install psycopg2
3
valex

Sous Windows, j'ai installé postgres manuellement à partir de http://www.enterprisedb.com/products-services-training/pgdownload#windows . Après cela, la même commande fonctionne.

2
Max

Si vous utilisez postgresql 9.4, le fichier se trouve dans

/usr/pgsql-9.4/bin/pg_config

Le nom du paquet est

postgresql94-9.4.9-1PGDG.rhel6.x86_64

pour ajouter pg_config à votre PATH, procédez comme suit:

PATH=$PATH:/usr/pgsql-9.4/bin/
1
Ahmed

En plus des réponses fournies par @bkev et @andi, selon la documentation sur Postgres.app, vous devez ajouter ce qui suit à votre bash_profile sur Mac:

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

Notez que, il n'y a pas de numéro de version codé en dur. Je voulais ajouter ceci en tant que commentaire aux réponses ci-dessus, mais je n'ai pas assez de représentants pour cela.

1
Turgut Sarıçam

virtualenv est destiné aux python. Je ne pense pas que vous pourrez contenir postgres dans un virtualenv. Le message d'erreur que vous voyez est probablement dû au fait que vous n'avez pas encore installé postgres. Le script d'installation psycopg2 recherche les fichiers postgres (dans ce cas pg_config) et ne les trouve pas car il n'est pas installé. Postgres ne peut pas être installé à l'aide de pip ou de virtualenv.

1
Holy Mackerel

Si vous n'avez pas à utiliser spécifiquement le pilote psycopg, passez à la commande pg8000 chauffeur. C'est pur Python et moins capricieux.

0
Chris Johnson

Le mien était situé dans /Library/PostgreSQL/9.4/bin

export PATH=$PATH:/Library/PostgreSQL/9.4/bin
0
InternetFett

Sur bunt Je n'avais besoin que du paquet postgres dev:

Sudo apt-get install postgresql-server-dev-all
0
marcanuy