psycopg2-binary是开发测试首选,预编译免编译,一键安装解决egg_info错误;生产环境建议源码安装psycopg2以保障兼容性与稳定性。

直接用 pip install psycopg2-binary 最省事
绝大多数开发场景下,psycopg2-binary 是首选。它自带预编译的 C 扩展,不依赖系统级构建工具(比如 gcc、postgresql-client-dev),Windows/macOS/Linux 都能一键装好。
常见错误现象:pip install psycopg2 报错一堆 fatal error: libpq-fe.h: No such file or directory 或卡在 building wheel for psycopg2 —— 这就是缺编译环境,别硬扛。
- 运行
pip install psycopg2-binary即可,无需额外配置 - 如果项目锁定了版本(比如要求
2.9.12),写成pip install psycopg2-binary==2.9.12 - 注意:
psycopg2-binary不适合长期运行的生产服务(官方明确提示),但开发、测试、CI/CD 完全没问题
pip install psycopg2 什么时候必须用
只有两种情况值得切回源码版:生产环境部署在受控 Linux 服务器上,且你已确认系统装好了 libpq-dev(Debian/Ubuntu)或 postgresql-devel(RHEL/CentOS)和 C 编译器。
性能影响不大,但二进制包体积略大(多带了动态库),而源码编译后更贴合本地 libpq 版本,偶发连接池或 SSL 握手兼容性问题会少一点。
- Debian/Ubuntu:先
apt-get install libpq-dev build-essential python3-dev - RHEL/CentOS:先
yum install postgresql-devel gcc python3-devel - 再执行
pip install psycopg2,不是psycopg2-binary - 容器镜像中若用 Alpine,得换
psycopg2cffi或改用pg8000(纯 Python 驱动)
连 pip 都没有?离线安装怎么搞
内网机器或 CI 环境没网络时,不能只靠 pip install。得提前下载对应平台的 .whl 文件。
关键点:.whl 文件名里含平台标识,比如 psycopg2_binary-2.9.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl,其中 cp39 是 Python 3.9,manylinux_x86_64 是 Linux 64 位 —— 错一个就 Unsupported wheel。
- 去 PyPI 的 psycopg2-binary 页面 手动下载匹配的
.whl - 传到目标机器,运行
pip install /path/to/psycopg2_binary-*.whl - 别用
pip install *.whl—— shell 展开顺序不可控,可能装错版本
为什么 import 就报 ModuleNotFoundError
装完却 import 失败,八成是环境错位。尤其在 VS Code、PyCharm 或 conda 虚拟环境中,pip 和 python 可能不是同一个解释器。
验证方法:在终端里跑这两行,看路径是否一致:
python -c "import sys; print(sys.executable)"<br>python -m pip show psycopg2-binary
不一致就说明 pip 装到了别的环境。解决方式:
- 用
python -m pip install psycopg2-binary替代裸pip install - 在 IDE 里检查当前 Python 解释器路径,确保终端激活的是同一虚拟环境
- conda 用户优先用
conda install psycopg2,避免混用 pip/conda
pip install 时,背后那个没被显式声明的 Python 环境、系统架构、以及 libpq 版本——它们不会报错,只会静默让 import 失败。











