我在我的arm64构建中遇到了同样的问题。当我基于Python3 (Debian)构建Docker容器时,如果我为arm64构建,则会安装libpq版本9。
WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64) and no specific platform was requested
Python 3.10.0 (default, Nov 18 2021, 00:02:14) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
>>> print(psycopg2.__libpq_version__)
90623
>>> print(psycopg2.extensions.libpq_version())
90623
>>>
但是如果我在一台 amd64 CPU 上构建完全相同的 Dockerfile,我安装了不同版本的软件。
Python 3.10.0 (default, Nov 17 2021, 15:26:39) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
>>> print(psycopg2.__libpq_version__)
130003
>>> print(psycopg2.extensions.libpq_version())
130003
我也尝试使用 python:3-alpine
适用于arm64,结果得到了更好的结果。
WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64) and no specific platform was requested
/src
Python 3.10.0 (default, Nov 30 2021, 00:28:27) [GCC 10.3.1 20211027] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
>>> print(psycopg2.__libpq_version__)
140001
>>> print(psycopg2.extensions.libpq_version())
140001
>>>
我猜问题出在Debian/Ubuntu使用的存储库上。
也许你应该向Debian和Ubuntu开启一个工单,要求更新arm64架构下的PostgreSQL客户端包。