LoginSignup
2
0

More than 1 year has passed since last update.

[Docker / python / postgresql] psycopg2-binary をインストールしようとして Error: pg_config executable not found. が発生した場合

Last updated at Posted at 2022-03-13

症状

pipモジュールのpsycopg2-binaryをpip installしようとした時に、以下のエラーが発生

Collecting asgiref==3.5.0
  Downloading asgiref-3.5.0-py3-none-any.whl (22 kB)

...

Collecting pillow==9.0.1
  Downloading Pillow-9.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.3/4.3 MB 14.0 MB/s eta 0:00:00
Collecting psycopg2-binary==2.9.3
  Downloading psycopg2_binary-2.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.0/3.0 MB 14.6 MB/s eta 0:00:00
Collecting psycopg2==2.9.3
  Downloading psycopg2-2.9.3.tar.gz (380 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 380.6/380.6 KB 6.2 MB/s eta 0:00:00
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'error'
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [23 lines of output]
      running egg_info
      creating /tmp/pip-pip-egg-info-jcptnq3_/psycopg2.egg-info
      writing /tmp/pip-pip-egg-info-jcptnq3_/psycopg2.egg-info/PKG-INFO
      writing dependency_links to /tmp/pip-pip-egg-info-jcptnq3_/psycopg2.egg-info/dependency_links.txt
      writing top-level names to /tmp/pip-pip-egg-info-jcptnq3_/psycopg2.egg-info/top_level.txt
      writing manifest file '/tmp/pip-pip-egg-info-jcptnq3_/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>).

      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
ERROR: Service 'web' failed to build : The command '/bin/sh -c pipenv lock -r --dev > requirements.txt     && pip install -r requirements.txt' returned a non-zero code: 1

気になるエラーメッセージはこれ

Error: pg_config executable not found.

このキーワードを色々組み合わせて、対処法を探した。

環境

項目 versionなど
docker Docker version 20.10.8, build 3967b7
docker image python:3.9-slim
python 3.9.7
psycopg2 2.9.3
psycopg2-binary 2.9.3

対処法

結果として、この記事に従ったところ、解決した。

ただ、英語で書かれているのと、なかなか見つからなかったので日本語で記事にしておいた。

変更箇所

具体的には、ubuntu系のdocker imageを使っているのであれば、libpq-devをapt-get installすることで解決する。

Dockerfile
RUN apt-get -y install \
    # For psycopg2 (postgresql client)
    libpq-dev

これでOK。

ただし、alpine系のimageでは恐らくこの方法では対応できないので注意。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0