【Windows】Python 3.12でpsycopg2がエラーが出てインストールできなかったのでpsycopg3に乗り換えた話

Pythonのバージョンを3.12に上げたのでパッケージのインストールをし直していたら、psycopg2をインストールしようと思ったときにエラーが出た。

 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 0: invalid start byte
      [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.

どうもpipのせいではないよと書いてあるのでパッケージ自身の問題だなと思い調べてみたら、この記事を書いている2023年10月28日時点で以下のissueで対応していることはわかった。

Add Python 3.12 support for Windows #1628
https://github.com/psycopg/psycopg2/issues/1628

でも早めに対応したいところがあったのでリリースまで待つわけにはいかないなーと思ったら、issue内に「psycopg3へ移行したらどうだい」というコメントを見つけたので、「3出てたんかい!」となり速攻でインストール。

pip install psycopg

あとはドキュメントを読めばわかるはず…

https://www.psycopg.org/psycopg3/docs/basic/usage.html

関連記事

年収アッププログラミング 【Firestore v9】dateフォームの値を入れるとtimestamp型ではなくstring型と判断されてしまう問題の解決方法

【Firestore v9】dateフォームの値を入れるとtimestamp型ではなくstring型と判断されてしまう問題の解決方法

最近Firebaseを使って簡単なウェブアプリを作るのにチャレンジしたのですが、Firestoreのtimestamp型に癖があって苦労しました。 特に困ったのがdateフォームからのデータを入力するときで、そのまま値を入れたらstring型と判断されて「あれ?」となりま...

年収アッププログラミング

【MySQL】AUTO_INCREMENTとPRIMARY KEYを同時に設定する方法

CREATE TABLE時にidへAUTO_INCREMENTとPRIMARY KEYを設定するのは定番だと思うのですが、最近はフレームワークを使ってテーブルを作るため、いざSQLを書いて作ろうとすると忘れがち。 今回は自分の名前とメールアドレスを格納するuser...