それまでflask-sqlalchemyからSQLite使ってテスト的に動かしていたものを、Postgresに変更しようとしていました。
それ自体は問題なかったのですが、Dockerから使っていてコンテナ内からコマンドで「flask db …」を使おうとすると、エラーが出るようになってしまったのです。
flask dbからPostgresを動かすために「psycopg2」というライブラリが必要とされるらしいのですが、これをビルドする際に必要なライブラリが必要とされていて、そこで引っかかるようでした。
その依存はどこかで自動で入れて欲しい…
なかなか情報がなくて厳しかったのですが、こちらのエントリーが大変参考になりました。
こちらでは
を入れれば大丈夫だったようですが、gccはすでに入っていたのにだめで、エラーでは「clang」がない、と言われたのでこっちを入れることにしました。
- libpq-dev
- clang
Dockerfileでaptでインストールしているところで
apt-get install libpq-dev clang
を追加しました。
その上で「pycopg2」をインストールします。
rye add pcysopg2
して、pyproject.tomlのdependenciesに下記を追加しました。
"psycopg2>=2.9.9",
これでやっとこDocker内でflask db …でPostgresも触れるようになりました。