apt-get install -y libpq-dev gcc
pip install psycopg2==2.9.9
python -c "import psycopg2; print(psycopg2.__version__)"

容器里 pip install psycopg2==2.9.9,构建到最后报 Error: pg_config executable not found。同一份 requirements 在开发机上从来没出过问题。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:psycopg2 的源码包要链接 libpq,需要 PostgreSQL 的客户端开发文件才能编译。基础镜像里通常只有运行时库,没有 pg_config 这个工具。

「pg_config 缺失」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

处理上按这个顺序:优先装 psycopg2-binary 它自带 libpq 不需要编译;必须用源码版就先装 libpq-dev 和 gcc 再装包;编译完把开发包从最终镜像里去掉 用多阶段构建;确认运行时 libpq 版本和编译时一致 避免符号找不到。

确认没问题再收工,构建日志里不再出现 pg_config import psycopg2 能打印出版本号。

作者 9823189