Prompts(5)

Más recientemente, tras actualizar la aplicación Postgres.app me topé con que uno de mis entornos de conda se había roto. Al tratar de ejecutar la aplicación para el que dicho entorno fue creado una serie de mensaje de error aparecieron. Éstos dieron la pauta para determinar la causa, que como puede verse abajo, se debía a la ausencia de una librería de PostgreSQL.

El mensaje de error era generado por la librería de Python que provee el conector con la base de datos, psycopg2.

...
ImportError: dlopen(/Users/lalo/Applications/MiniConda3/envs/sge/lib/python3.8/site-packages/psycopg2/_psycopg.cpython-38-darwin.so, 0x0002): Library not loaded: /Applications/Postgres.app/Contents/Versions/14/lib/libpq.5.dylib
  Referenced from: <6CF9CA11-193C-3B2C-B8B9-E57B25BE579F> /Users/lalo/Applications/MiniConda3/envs/sge/lib/python3.8/site-packages/psycopg2/_psycopg.cpython-38-darwin.so
  Reason: tried: '/Applications/Postgres.app/Contents/Versions/14/lib/libpq.5.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Applications/Postgres.app/Contents/Versions/14/lib/libpq.5.dylib' (no such file), '/Applications/Postgres.app/Contents/Versions/14/lib/libpq.5.dylib' (no such file), '/usr/local/lib/libpq.5.dylib' (no such file), '/usr/lib/libpq.5.dylib' (no such file, not in dyld cache)
...

Debido a que previamente se hizo la actualización de postgres.app, fue fácil entender lo que pasaba y lo primero que viene a la mente de uno es reinstalar la librería pero, ¡oh sorpresa! encontrarse con que esto no es posible. No recordaba que inicialmente este problema ya lo había encontrado y había optado por instalar «un binario». Al tratar de instalar la librería, entre muchos mensajes, se leía Error: pg_config executable not found.

Aunque sí inicie la búsqueda de respuestas en Google (hábitos) y rápido encontré algunas, casi todas ellas apuntaban a que en macOS debía «instalar PostgreSQL«. De alguna manera las explicaciones parecían sugerir que lo que postgres.app instalaba era un run-time y debía contarse con librerías de desarrollo. La verdad las ideas tenían cierto sentido pues no sería raro pensar que la mencionada aplicación sólo incluyera lo necesario para correr el servicio de PostgreSQL.

A mi me gusta mucho la mencionada aplicación y pensar en duplicar (ya sea descargándolo de su página o vía Homebrew) la instalación de PostgreSQL sólo para contar con ciertos archivos de cabecera no me agrada nada. De entre las respuestas encontradas había una que sugería que no era necesario nada de lo anterior pero la respuesta no estaba completa (de esas respuestas que asumen ya eres un experto en el producto… que de serlo no estaría buscando en dicho foros 🙄). Antes de profundizar en la dirección de esa respuesta incompleta, decidí probar suerte con ChatGPT, que me completó lo que esa pseudo respuesta sugería.

El prompt usado fue «how can i solve the error «Error: pg_config executable not found» if I have postgres.app installed in my mac?» y la respuesta:

If you have installed Postgres.app on your Mac but are encountering the «Error: pg_config executable not found» error, it typically means that the pg_config executable file is not included in your system’s PATH variable. Here’s how you can solve this issue:

  1. Open Terminal on your Mac.
  2. Run the following command to locate the pg_config executable file: $ sudo find / -name pg_config
  3. The command will search for the pg_config file in your system. Once it’s found, make note of the directory where it is located. The output might look something like /Applications/Postgres.app/Contents/Versions/13/bin/pg_config.
  4. Next, open your shell profile file (e.g., ~/.bash_profile, ~/.zshrc, or ~/.bashrc) in a text editor.
  5. Add the following line to the file, replacing /path/to/pg_config with the actual path you obtained in step 3: $ export PATH=/path/to/pg_config:$PATH
  6. Save the file and exit the text editor.
  7. Restart your Terminal or run the following command to apply the changes: $ source ~/.bash_profile (Replace ~/.bash_profile with the correct file if you used a different shell profile file in step 5.)

After following these steps, the «Error: pg_config executable not found» should be resolved, and you should be able to use pg_config and related PostgreSQL commands without encountering that error.

Algunas notas sobre la respuesta de ChatGPT son:

  • El comando del paso 2 es mejor como $ sudo find /  ! -path 'System/Volumes/*' -name pg_config 2>/dev/null para evitar mensajes de error o advertencia innecesarios y sólo obtener rutas que no tengan problemas de acceso.
  • pg_config es un ejecutable por lo que el path no debe incluirlo (e.g. del path del paso 3 sólo copiar hasta bin).
  • Puesto que la adición a PATH es sólo para efectos de compilación al instar la librería psycopg2, los pasos 4 y 5 sólo son para este propósito (sólo una vez, hasta siguiente actualización) y no tiene caso agregarlos.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.