事象
- 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 のパスが見つかっていないため。
解決策
/usr/pgsql-12/bin/pg_config
- pg_config のあるディレクトリにパスを通して、psycopg2 をインストールする。
$ export PATH=$PATH:/usr/pgsql-12/bin/
$ pip install psycopg2
$ pip install psycopg2-binary