エラーが起こったのでpsycopg2-binaryを入れるとすんなり入ったのですが、x64 Linuxを使っててこれしかないっていうことはありえないということで、原因を追究。
環境
WSL2
Distributor ID: Ubuntu
Description: Ubuntu 20.04.5 LTS
Release: 20.04
Codename: focal
[tool.poetry.dependencies]
python = “3.8”
psycopg2 = “2.9.4”
問題の追究
エラー内容をよく読むと、psycopg2のビルドにはpg_configが必要の様子。
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'.
pg_configのインストール
pg_configはapt内のlibpq-devパッケージに含まれるとのことでこれをインストール
参考:
postgresql – pg_config – postgresのバージョンを変更する方法
https://stackoverflow.com/questions/48562616/pg-config-how-to-change-postgres-versions
PostgreSQLをインストールするには | Ninton
https://www.ninton.co.jp/archives/3834
気を取り直してもう一度psycopg2のインストールを試みるが、またもエラー
ログを見てみると
× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [21 lines of output]
running bdist_wheel
running build
running build_py
running build_ext
building 'psycopg2._psycopg' extension
In file included from psycopg/adapter_asis.c:28:
./psycopg/psycopg.h:35:10: fatal error: Python.h: No such file or directory
35 | #include
| ^~~~~~~~~~
compilation terminated.
It appears you are missing some prerequisite to build the package from source.
なるほどよくわからんので適当にエラーの文言を検索すると以下のサイトがヒット
django – Error trying to install Postgres for python (psycopg2) – Stack Overflow
https://stackoverflow.com/questions/22938679/error-trying-to-install-postgres-for-python-psycopg2
なるほどpython3-devがいるのかなと思ってインストールしてみてみるとビンゴ
無事poetryでpsycopg2をインストールできました。
改めてその後資料を見てみると
install psycopg2 with pg_config error in Ubuntu? – Step Up Automation
https://stepupautomation.wordpress.com/2020/06/23/install-psycopg2-with-pg_config-error-in-ubuntu/
ここにもうちょっと突っ込んだ内容も含めて全部書いてありました