You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下导入psycopg2报错:Library not loaded问题求助

解决MacOS下psycopg2导入时找不到libpq.5.dylib的问题

问题重现

导入psycopg2时触发以下错误:

ImportError: dlopen(/Users/lce21/Documents/GitHub/hazen-web-app/hazen-web-app/lib/python3.8/site-packages/psycopg2/_psycopg.cpython-38-darwin.so, 0x0002): Library not loaded: /usr/local/opt/postgresql/lib/libpq.5.dylib

Referenced from: /Users/lce21/Documents/GitHub/hazen-web-app/hazen-web-app/lib/python3.8/site-packages/psycopg2/_psycopg.cpython-38-darwin.so

Reason: tried: '/usr/local/opt/postgresql/lib/libpq.5.dylib' (no such file), '/usr/local/lib/libpq.5.dylib' (no such file), '/usr/lib/libpq.5.dylib' (no such file), '/usr/local/Cellar/postgresql@14/14.6/lib/libpq.5.dylib' (no such file), '/usr/local/lib/libpq.5.dylib' (no such file), '/usr/lib/libpq.5.dylib' (no such file)

已尝试操作:

  • 安装psycopg2-binary
  • 在虚拟环境/全局环境重新安装psycopg2
  • 确认Postgres已成功安装

解决方案

1. 定位libpq.5.dylib的实际位置

先通过命令找到系统中真实存在的libpq.5.dylib文件:

# 搜索brew安装的Postgres路径
find /usr/local -name "libpq.5.dylib"
# 如果是Postgres.app安装,搜索应用目录
find /Applications/Postgres.app -name "libpq.5.dylib"

执行后会得到类似路径:/usr/local/Cellar/postgresql@15/15.3/lib/libpq.5.dylib 或 /Applications/Postgres.app/Contents/Versions/15/lib/libpq.5.dylib

2. 方法一:创建软链接到缺失路径

psycopg2正在查找/usr/local/opt/postgresql/lib/libpq.5.dylib,我们可以将实际存在的文件链接到该路径:

# 先创建目标目录(如果不存在)
sudo mkdir -p /usr/local/opt/postgresql/lib
# 替换[实际路径]为你找到的libpq.5.dylib路径
sudo ln -s [实际路径] /usr/local/opt/postgresql/lib/libpq.5.dylib

示例:

sudo ln -s /usr/local/Cellar/postgresql@15/15.3/lib/libpq.5.dylib /usr/local/opt/postgresql/lib/libpq.5.dylib

3. 方法二:设置DYLD_LIBRARY_PATH环境变量

将Postgres的lib目录加入动态链接库路径:

  • 临时生效(仅当前终端会话):
# 替换[Postgres lib路径]为实际路径,比如/usr/local/Cellar/postgresql@15/15.3/lib
export DYLD_LIBRARY_PATH=[Postgres lib路径]:$DYLD_LIBRARY_PATH
  • 永久生效(添加到shell配置文件):
    若使用zsh,编辑~/.zshrc;使用bash则编辑~/.bash_profile,加入:
export DYLD_LIBRARY_PATH=/usr/local/Cellar/postgresql@15/15.3/lib:$DYLD_LIBRARY_PATH

执行source ~/.zshrc(或对应配置文件)使修改生效。

4. 方法三:重新编译psycopg2并指定Postgres路径

先卸载已安装的psycopg2相关包:

pip uninstall -y psycopg2 psycopg2-binary

指定Postgres的bin路径后重新编译安装:

# 替换[Postgres bin路径]为实际路径,比如/usr/local/Cellar/postgresql@15/15.3/bin
export PATH=[Postgres bin路径]:$PATH
pip install psycopg2 --no-binary :all:

额外检查

  • 若用brew安装Postgres,执行brew info postgresql确认安装版本和路径,确保找到的文件路径与实际版本匹配。
  • 若用Postgres.app,确保应用已启动,且路径中的版本号与安装的Postgres版本一致。

内容的提问来源于stack exchange,提问作者MeravigliaTitti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:15:44