python - crear - Mac+virtualenv+pip+postgresql=Error: el ejecutable pg_config no se encuentra
crear entorno virtual python windows (14)
Estaba tratando de instalar postgres para un tutorial, pero pip
me da error:
pip install psycopg
Un fragmento de error que obtengo:
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''.
¿Dónde está pg_config
en mi virtualenv? ¿Cómo configurarlo? Estoy usando virtualenv porque no quiero una instalación de postgres en todo el sistema.
Además de las respuestas proporcionadas por @bkev y @andi, de acuerdo con la documentation en Postgres.app, debe agregar lo siguiente a su bash_profile en Mac:
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
Tenga en cuenta que no hay un número de versión codificado. Quería agregar esto como un comentario a las respuestas anteriores, pero no tengo suficiente reputación para esto.
Así es como pude resolver este problema en mi Mac (OSX 10.9):
brew update
brew install --force ossp-uuid
brew install postgresql
pip install psycopg
Obtuve un error CLANG cuando probé pip install psycopg
(un problema de LLVM 5.1 ), así que tuve que instalar psycopg con este comando:
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg
Es similar a Mingyu''s solución Mingyu''s , pero hay suficientes diferencias que pensé que valía la pena compartir.
El mío estaba ubicado en /Library/PostgreSQL/9.4/bin
export PATH=$PATH:/Library/PostgreSQL/9.4/bin
En Ubuntu solo necesitaba el paquete dev de postgres:
sudo apt-get install postgresql-server-dev-all
En Mac, la solución es instalar postgresql
:
brew install postgresql
En CentOS, la solución es instalar postgresql-devel
:
sudo yum install postgresql-devel
pg_config
está en el paquete postgresql-devel
En Windows instalé postgres manualmente desde http://www.enterprisedb.com/products-services-training/pgdownload#windows . Después de eso, el mismo comando funciona.
En la Mac, si está utilizando Postgres.app , el archivo pg_config se encuentra en su directorio /Applications/Postgres.app/Contents/Versions/<current_version>/bin
. Eso deberá agregarse a la ruta del sistema para corregir este error, como este:
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/<current_version>/bin
Entonces, por ejemplo, si la versión actual de Postgres.app es 9.5, esta línea de exportación sería:
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.5/bin
Este error se produce cuando las herramientas de compilación no pueden encontrar las bibliotecas Postgresql.
A menudo se requiere que instruya a psycopg2 cómo encontrar el binario pg_config, usted puede:
agregue la ruta a pg_config en su ruta de shell (/ usr / local / pgsql / bin /)
o edite el archivo setup.cfg en la carpeta fuente psycopg2 y proporcione la ruta completa a pg_config en la línea que comienza con pg_config =
pg_config = / usr / local / pgsql / bin / pg_config
- lo anterior es un ejemplo, puede
locate pg_config
para averiguar dónde reside, o simplemente escribawhich pg_config
y debe indicarle la ruta.
Con menor frecuencia, el error proviene de no haber instalado postgresql en su sistema. Si es así, descargue y cree postgres, o descargue un binario psycopg2 pre-construido para OS X.
Estoy totalmente de acuerdo con John Hight en que la mayoría de las respuestas publicadas son totalmente offtopic suponiendo que el OP especificó exactamente la necesidad de usar virtualenv .
Para mí, la respuesta fue runing following command in prompt mientras activaba virtualenv:
export PATH="/Applications/Postgres.app/Contents/Versions/9.4/bin:$PATH"
(observe que la parte 9.4 representa la versión y puede variar) y luego:
pip install psycopg2
va con la suposición de que has instalado postgres. Y si no, recuerda que la mejor y más recomendada solución es utilizar: Postgres.app
Para OS X El Captain (10.11.6)
+ brew
+ virtualenv
+ PostgreSQL 9.5
:
Después de instalar PostgreSQL 9.5
:
brew install [email protected]
Abra su terminal y ejecute:
export PATH=$PATH:/usr/local/opt/postgresql/@9.5/bin/
pip install psycopg2
Si está utilizando postgresql 9.4, el archivo se encuentra en
/usr/pgsql-9.4/bin/pg_config
El nombre del paquete es
postgresql94-9.4.9-1PGDG.rhel6.x86_64
para agregar pg_config a su RUTA, haga lo siguiente
PATH=$PATH:/usr/pgsql-9.4/bin/
Si no tiene que usar específicamente el controlador psycopg
, cambie al controlador pg8000
. Es puro Python y menos meticuloso.
virtualenv es para paquetes de python. No creo que puedas contener postgres dentro de un virtualenv. Es probable que el mensaje de error que está viendo se deba a que aún no ha instalado postgres. El script de instalación de psycopg2 está buscando archivos postgres (en este caso, pg_config) y no los encuentra porque no está instalado. postgres no se puede instalar usando pip o virtualenv.
¡No olvide que su variable $ PATH en el entorno virtual! = Su variable global $ PATH. Puede confirmar esto con ''echo $ PATH'' en su virtualenv y también en un nuevo shell. Entonces, a menos que desee instalar PostgreSQL como una instancia única dentro de su entorno virtual (no es algo que valga la pena, imo), necesitará modificar la variable $ PATH dentro del virtualenv para incluir la ruta a su instalación global (que resuelve tu error pg_config faltante).
Estos son los pasos:
1.) En un nuevo shell, escribe ''which pg_config''. Esto devolverá el camino. Cópialo. En mi caso, el camino se veía así: /Applications/Postgres.app/Contents/Versions/9.3/bin
2.) De vuelta en su shell virtualenv, escriba ''export PATH = / your-path-to-pg_config: $ PATH''
3.) Luego, aún dentro del virtualenv, ''pip install psycopg2''
Si todo va según lo planeado, esto instalará psycopg2 dentro del entorno virtual, pero la instalación se referirá a su instalación global de PostgreSQL. En mi caso, esta instalación global se instaló a través de Postgres.App, de ahí la ruta. Prefiero este método de trabajo con psycopg2, ya que significa que puedo usar la base de datos fácilmente dentro de cualquier entorno virtual en lugar de solo dentro del entorno virtual definido.
Espero que esto ayude a cualquiera que llegue aquí. Para Google juice, aquí está el lenguaje de error explícito (y vago) que se devuelve cuando se encuentra con este problema:
El comando python setup.py egg_info falló con el código de error 1