虚拟环境安装psycopg2-binary仍提示需编译源码找不到pg_config报错问题
安装psycopg2-binary仍提示需要pg_config的原因及解决方案
核心原因
出现该报错的本质是pip最终仍拉取了psycopg2的源码包尝试编译,和你输入的安装包名无关,常见触发场景如下:
- pip版本过低:20.3之前的pip版本对manylinux2014标准、arm等新架构的预编译二进制包识别支持存在缺陷,无法匹配到对应你的系统/环境的预编译包时,就会自动回退到下载源码包编译。
- 无对应预编译包:如果你使用的是刚发布的最新Python测试版、小众硬件架构(如部分嵌入式ARM设备、RISC-V架构),psycopg2官方尚未发布对应版本的预编译二进制包,pip只能拉取源码编译。
- pip配置了禁止二进制包规则:如果你在pip配置文件(pip.conf/pip.ini)中配置了
--no-binary :all:参数,或是执行安装命令时附带了该参数,会强制所有包从源码编译,哪怕存在可用的二进制包也不会使用。 - PyPI镜像源同步不全:如果你使用第三方PyPI镜像源,可能存在预编译包同步滞后、缺失的问题,导致pip只能拉到源码包。
解决方案
按优先级尝试以下操作即可:
- 升级pip到最新版本后重新安装:
pip install --upgrade pip pip install psycopg2-binary
- 显式指定允许psycopg2-binary使用二进制包安装:
pip install --only-binary psycopg2-binary psycopg2-binary
- 排查镜像源问题,临时切换官方源安装:
pip install psycopg2-binary -i https://pypi.org/simple
- 如果确实没有对应预编译包,先安装PostgreSQL开发依赖后再安装:
- Debian/Ubuntu系列系统:
sudo apt install libpq-dev python3-dev pip install psycopg2-binary
- RHEL/CentOS/Fedora系列系统:
sudo dnf install postgresql-devel python3-devel pip install psycopg2-binary
- macOS系统:
brew install postgresql pip install psycopg2-binary
内容的提问来源于stack exchange,提问作者Sundraw
相关产品推荐
相关产品推荐

