pg_config ejecutable no encontrado

771

Tengo problemas para instalar psycopg2. Recibo el siguiente error cuando intentopip 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

Pero el problema es pg_configen realidad en mi PATH; Se ejecuta sin ningún problema:

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

Intenté agregar la ruta pg_config al setup.cfgarchivo y compilarlo utilizando los archivos fuente que descargué de su sitio web ( http://initd.org/psycopg/ ) y recibí el siguiente mensaje de error.

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

Pero en realidad está allí!

Estoy desconcertado por estos errores. ¿Alguien puede ayudar por favor?

Por cierto, yo sudotodos los comandos. También estoy en RHEL 5.5.

usuario1448207
fuente
8
Cuando ejecuta comandos como sudo, $PATHse cambia. ¿Puedes por favor verificar tu $ PATH como root?
Hugo Tavares
1
En mi caso, corro ln -s /usr/pgsql-9.1/bin/pg_config /usr/sbin/pg_configy todo está bien!
CK.Nguyen
Gracias @ CK.Nguyen tu propina realmente funcionó para mí.
pratibha

Respuestas:

766

pg_configestá en postgresql-devel( libpq-deven Debian / Ubuntu, libpq-develen Centos / Cygwin / Babun.)

TilmanBaumann
fuente
66
Resuelto después de instalar libpq-deven ubuntu lucid (10.04). Gracias de antemano.
pylover
22
pg_configde postgress.app está en /Applications/Postgres.app/Contents/Versions/<your version>/bin(Mac OS X)
Tim Daubenschütz
17
Está libpqxx-develen fedora.
robsn
55
sudo apt-get install libpq-devfuncionó para mí en Ubuntu
Bill Cheatham
48
en Alpine Linux: apk agregar postgresql-dev
RJ
385

En Mac OS X, lo resolví usando el administrador de paquetes homebrew

brew install postgresql
azalea
fuente
29
¡Excelente! Esto resolvió el problema para mí, pero los novatos deben tener en cuenta que primero debe instalar el administrador de paquetes Homebrew para que el brewcomando funcione.
seane
También funcionó para mí, a pesar de que hice la instalación de preparación después de la instalación de pgadmin.
Khanal
8
¿No instala eso toda la base de datos?
zmbq
3
Necesito el extrabrew link postgresql
vincentlcy
1
Para agregar al comentario de @ seane, use este tutorial para instalar homebrew.
Bruce Wayne el
236

Has instalado python-dev? Si ya tiene, intente también instalarlibpq-dev

sudo apt-get install libpq-dev python-dev

Del artículo: Cómo instalar psycopg2 bajo virtualenv

thegauraw
fuente
En mi computadora, solo instalo el cliente de Postgresql, por lo que debe instalar libpq-dev y python-dev.
bnPYSse
2
Dudoso de que se necesite python-dev.
juanitogan
me ayudó. Gracias
Arun
44
Se necesita python3-dev. Sin ella me salePython.h: No such file or directory
krubo
1
una dependencia más requerida para esto esapt-get install -y gcc
Anum Sheraz
75

También en OSX. Instalé Postgress.app desde http://postgresapp.com/ pero tuve el mismo problema.

Encontré pg_configen el contenido de esa aplicación y agregué el directorio $PATH.

Fue a las /Applications/Postgres.app/Contents/Versions/latest/bin. Así que esto funcionó: export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH".

Tayler
fuente
3
@GianlucaLodigiani también puede hacer esto si no desea reiniciar la consolaPATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH" pip install psycopg2
Bernardo Duarte
45

En alpino, la biblioteca que contiene pg_configes postgresql-dev. Para instalar, ejecute:

apk add postgresql-dev
rkoval
fuente
38

Esto es lo que funcionó para mí en CentOS, primero instalar:

sudo yum install postgresql postgresql-devel python-devel

En Ubuntu solo use los paquetes equitativos de apt-get.

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

Y ahora incluya la ruta a su directorio binario postgresql con su instalación pip, esto debería funcionar para Linux basado en Debain o RHEL:

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

Asegúrese de incluir la ruta correcta. Eso es todo :)

radtek
fuente
1
En Ubuntu es sudo apt-get install postgresql postgresql-dev python-dev, y esto funcionó para mí.
modulitos
2
también funciona en Amazon Linux AMI a partir de diciembre de 2016. También asegúrese de que gccesté instalado y python3-devel.
villasv
¡¡¡gracias!!! ¡Funcionó también en Fedora 32 Workstation!
Marcelo Gazzola
37
apt-get build-dep python-psycopg2
matiu
fuente
34

Debe agregar los requisitos de Python utilizados en Postgres en Ubuntu. Correr:

sudo apt-get install libpq-dev python-dev
Kishore Bhosale
fuente
32

Para resumir, también enfrenté exactamente el mismo problema. Después de leer muchas publicaciones de stackoverflow y blogs en línea, la solución final que funcionó para mí es esta:

1) PostgreSQL (desarrollo o cualquier versión estable) debe instalarse antes de instalar psycopg2.

2) El archivo pg_config (este archivo normalmente reside en la carpeta bin de la carpeta de instalación de PostgreSQL) PATH tuvo que configurarse explícitamente antes de instalar psycopg2. En mi caso, la ruta de instalación para PostgreSQL es:

/opt/local/lib/postgresql91/

para establecer explícitamente la RUTA del archivo pg_config, ingresé el siguiente comando en mi terminal:

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

Este comando garantiza que cuando intente pip install psycopg2, encuentre la RUTA a pg_config automáticamente esta vez.

También publiqué un error completo con trace y su solución en mi blog, que es posible que desee consultar. Es para Mac OS X pero el problema pg_config PATH es genérico y aplicable a Linux también.

Ali Raza Bhayani
fuente
66
para mí en OS X, el camino se veía asíPATH="/Applications/Postgres.app/Contents/Versions/9.3/bin:$PATH"
andilabs
@andi Sí, la ruta de instalación de Postgres puede diferir, pero la receta de instalación para psycopg2 que mencioné anteriormente sigue siendo la misma. Espero que haya ayudado.
Ali Raza Bhayani
30

sudo apt-get install libpq-dev funciona para mí en Ubuntu 15.4

novasaint
fuente
Si usa Ubuntu más nuevo, aún use las instrucciones de instalación mencionadas anteriormente. Ver pg_config
palik
23

En Linux, Mint sudo apt-get install libpq-devfuncionó para mí.

mthecreator
fuente
21

Puede instalar binarios precompilados en cualquier plataforma con pipo conda:

python -m pip install psycopg2-binary

o

conda install psycopg2

Tenga en cuenta que la página de pycopg2-binary pypi recomienda construir desde la fuente en producción:

El paquete binario es una opción práctica para el desarrollo y las pruebas, pero en producción se recomienda usar el paquete creado a partir de fuentes

Para usar el paquete creado a partir de fuentes, use python -m pip install psycopg2. Ese proceso requerirá varias dependencias ( documentación ) (énfasis mío):

  • AC compilador .
  • Los archivos de encabezado de Python . Por lo general, se instalan en un paquete como python-dev . Un mensaje como error: Python.h: ningún archivo o directorio de este tipo es una indicación de que faltan los encabezados de Python.
  • Los archivos de encabezado libpq . Por lo general, se instalan en un paquete como libpq-dev . Si obtiene un error: libpq-fe.h: No existe tal archivo o directorio que les falta.
  • El programa pg_config : generalmente lo instala el paquete libpq-dev pero a veces no está en un directorio PATH. Tenerlo en la RUTA agiliza enormemente la instalación, así que intente ejecutar pg_config --version: si devuelve un error o un número de versión inesperado, busque el directorio que contiene el pg_config enviado con la versión correcta de libpq (generalmente / usr / lib / postgresql / XY / bin /) y agréguelo a la RUTA: $ export PATH=/usr/lib/postgresql/X.Y/bin/:$PATH solo necesita pg_config para compilar psycopg2, no para su uso regular.
jakub
fuente
En Ubuntu, primero necesitaba instalar la biblioteca libpq-dev y luego ejecutar nuevamente el comando pip install:apt install libpq-dev
Benjamin
20

ACTUALIZACIÓN /etc/yum.repos.d/CentOS-Base.repo, las secciones [base] y [actualizaciones]
ADD excluyen = 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
fuente
20

Para aquellos que ejecutan OS X, esta solución funcionó para mí:

1) Instalar Postgres.app:

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

2) Luego abra la Terminal y ejecute este comando, reemplazando donde dice {{versión}} con el número de versión de Postgres:

RUTA de exportación = $ RUTA: /Applications/Postgres.app/Contents/Versions / {{version}} / bin

p.ej

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

Milo
fuente
O enlace simbólico a la última versiónsudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Subin Sebastian, el
17

Intenta agregarlo a la RUTA:

PATH=$PATH:/usr/pgsql-9.1/bin/ ./pip install psycopg2
Marboni
fuente
-bash: cd: /usr/pgsql-x.x/bin/: No such file or directory
pylover
@pylover, debe usar la ruta correcta al directorio bin de Postgres. ¿Estás seguro de que /usr/pgsql-x.x/bin/es correcto?
Marboni
También sería suficiente agregar la carpeta donde pg_viven todos los archivos importantes . Para postgres.app esta ruta en Mac OS X es /Applications/Postgres.app/Contents/Versions/9.3/bin. PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin ¡Actualice su versión * si se lanzó una nueva versión!
Tim Daubenschütz
Esto funcionó para mí en OS X El Capitan:PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
David Hariri
16

La solución de Ali funcionó para mí, pero tenía problemas para encontrar la ubicación de la carpeta bin. Una forma rápida de encontrar la ruta en Mac OS X es abrir psql (hay un enlace rápido en la barra de menú superior). Esto abrirá una ventana de terminal separada y en la segunda línea la ruta de su instalación de Postgres aparecerá así:

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

Su archivo pg_config está en esa carpeta bin. Por lo tanto, antes de instalar psycopg2, configure la ruta del archivo pg_config:

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

o para una versión más nueva:

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

Luego instale psycopg2.

user2498172
fuente
1
Los documentos más nuevos utilizan la siguiente ruta:/Applications/Postgres.app/Contents/Versions/9.3/bin
jpimentel
Parece moverse. find /usr/local -name 'pg_config'
Praxeolitic
11

Necesita actualizar su pip antes de instalar psycopg2. Usa este comando

pip install --upgrade pip
Aswin
fuente
Una respuesta más detallada podría ser útil en la mayoría de los casos.
bkausbk
11

Voy a dejar esto aquí para la próxima alma desafortunada que no puede solucionar este problema a pesar de todas las soluciones proporcionadas. Simplemente usesudo pip3 install psycopg2-binary

DuDoff
fuente
Esto no funcionó para mí. Solo lo brew install postgresqlarregló.
tsando
Es posible que pip install psycopg2-binarydeba hacerlo para mí: pip -> python2, pip3 -> python3. Pero mientras lo hiciste funcionar, ¡fue una de las muchas soluciones!
DuDoff
9

Acabo de resolver el problema en Cent OS 7:

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

asegúrese de que su versión de PostgreSql coincida con la versión correcta anterior.

Morfat Mosoti
fuente
9

En Mac OS X y si está utilizando la aplicación Postgres ( http://postgresapp.com/ ):

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

No es necesario especificar la versión de Postgres en este comando. Siempre se señalará a lo último.

y hacer

pip install psycopg2

PD: Si los cambios no se reflejan, es posible que deba reiniciar el indicador de Terminal / Comando

Fuente

Dinesh Sunny
fuente
8

En MacOS, la solución más simple será vincular el binario correcto, que está debajo del paquete Postgres.

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

Esto es bastante inofensivo, y todas las aplicaciones podrán usarlo en todo el sistema, si es necesario.

Subin Sebastian
fuente
Funciona para mí, aunque no tuve que sudo. ¡Gracias!
John Ottenlips
¡Funciona para mí de verdad!
Hadnazzar
5

sudo yum install postgresql-devel (centos6X)

pip install psycopg2 == 2.5.2

usuario2387567
fuente
5

Aquí, para completar OS X: si instala PostgreSQL desde MacPorts, pg_config estará en /opt/local/lib/postgresql94/bin/pg_config .

Cuando instaló MacPorts, ya agregó /opt/local/bin a su RUTA.

Entonces, esto solucionará el problema: $ sudo ln -s /opt/local/lib/postgresql94/bin/pg_config /opt/local/bin/pg_config

Ahora pip install psycopg2podrá ejecutarse pg_configsin problemas.

Gabi
fuente
4

Para aquellos en macOS Catalina que usan el zshshell que también han instalado la aplicación postgres :

Abra su ~/.zshrcarchivo y agregue la siguiente línea:

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

Luego cierre todos sus terminales, vuelva a abrirlos y habrá resuelto su problema.

Si no desea cerrar sus terminales, simplemente ingrese source ~/.zshrcen la terminal en la que desea seguir trabajando.

qarthandso
fuente
¡Esto funcionó para mí en Macos y zshShell!
Aditya Rao
4

Para usuarios de mac, extienda su variable de ruta para incluir PostgreSQL como este export PATH=$PATH:/Library/PostgreSQL/12/bin.

Uzzi Emuchay
fuente
3

Así es como logré instalar 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
fuente
2

Estoy bastante seguro de que has experimentado el mismo "problema" que yo tuve, por lo tanto, te ofreceré la solución extremadamente fácil ...

En su caso, la ruta real que necesita agregar a $ PATH (o como un parámetro de comando) es:

/usr/pgsql-9.1/bin/pg_config

no

/usr/pgsql-9.1/bin

Por ejemplo, si ejecuta el script python setup.py después, lo ejecutaría así:

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

Probablemente demasiado tarde, pero sigue siendo la solución más fácil.

EDICIÓN MÁS TARDE:

En otra prueba descubrí que si inicialmente agrega la ruta a pg_config en el formulario

/usr/pgsql-9.1/bin

(sin / pg_config después de ..... / bin) y ejecute el comando pip install funcionará.

Sin embargo, si decide seguir la indicación de ejecutar python setup.py, deberá especificar la ruta con / pg_config después de ..... / bin, es decir

python setup.py build_ext --pg-config /usr/pgsql-9.1/bin/pg_config build
BogdanSorlea
fuente
Una alternativa a agregar el directorio pgsql / bin a la RUTA que he usado bastante es hacer un enlace simbólico /usr/pgsql-9.6/bin/pg_config(o como se llame en su sistema) /usr/bin/pg_config, de esa manera está disponible en la RUTA que ya tiene.
Ralph Bolton
2

para CentOS / RedHat, asegúrese de que /etc/alternatives/pgsql-pg_configsea ​​un enlace simbólico no roto

Hedde van der Heide
fuente