ablog

不器用で落着きのない技術者のメモ

postgresql12-devel をインストールしていても psycopg2 をインストールしようとすると "pg_config executable not found" と怒られる

事象

  • Amazon Linux 2 に psycopg2 をインストールしようとすると "Error: pg_config executable not found." というエラーが発生する。
  • 通常、postgresql-devel パッケージをインストールすると解決するが、PostgreSQL 12 ではインストール(yum install postgresql12-devel)しても解消しない。
$ sudo pip install psycopg2
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip install --user` instead.
Collecting psycopg2
  Using cached psycopg2-2.8.6.tar.gz (383 kB)
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python2 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-EuOSHg/psycopg2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-EuOSHg/psycopg2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-cQvrew
         cwd: /tmp/pip-install-EuOSHg/psycopg2/
    Complete output (23 lines):
    running egg_info
    creating /tmp/pip-pip-egg-info-cQvrew/psycopg2.egg-info
    writing /tmp/pip-pip-egg-info-cQvrew/psycopg2.egg-info/PKG-INFO
    writing top-level names to /tmp/pip-pip-egg-info-cQvrew/psycopg2.egg-info/top_level.txt
    writing dependency_links to /tmp/pip-pip-egg-info-cQvrew/psycopg2.egg-info/dependency_links.txt
    writing manifest file '/tmp/pip-pip-egg-info-cQvrew/psycopg2.egg-info/SOURCES.txt'

    Error: pg_config executable not found.

    pg_config is required to build psycopg2 from source.  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'.

    If you prefer to avoid building psycopg2 from source, please install the PyPI
    'psycopg2-binary' package instead.

    For further information please check the 'doc/src/install.rst' file (also at
    <https://www.psycopg.org/docs/install.html>).

    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

原因

  • pg_config のパスが見つかっていないため。

解決策

  • pg_config のパスを調べる。
# find / -name pg_config
/usr/pgsql-12/bin/pg_config
  • pg_config のあるディレクトリにパスを通して、psycopg2 をインストールする。
$ export PATH=$PATH:/usr/pgsql-12/bin/
$ pip install psycopg2
$ pip install psycopg2-binary