Brew升级后无法使用Python连接PostgreSQL数据库求助
解决brew升级PostgreSQL后psycopg2的库文件找不到问题
问题背景
通过brew完成PostgreSQL升级后,使用Python的psycopg2包连接数据库时出现导入错误:
ImportError: dlopen(/Users/fabioteichmann/.pyenv/versions/3.9.4/lib/python3.9/site-packages/psycopg2/_psycopg.cpython-39-darwin.so, 0x0002): Library not loaded: /opt/homebrew/opt/postgresql/lib/libpq.5.dylib Referenced from: /Users/fabioteichmann/.pyenv/versions/3.9.4/lib/python3.9/site-packages/psycopg2/_psycopg.cpython-39-darwin.so Reason: tried: '/opt/homebrew/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)
已确认PostgreSQL库文件实际路径为:
/opt/homebrew/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib
其他工具可正常连接数据库,仅psycopg2出现问题。
解决方案
方法一:创建软链接匹配期望路径
直接在psycopg2查找的路径下创建指向实际库文件的软链接:
sudo ln -s /opt/homebrew/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib /opt/homebrew/opt/postgresql/lib/libpq.5.dylib
执行后动态链接器就能在期望路径找到对应的库文件,无需修改psycopg2或环境配置。
方法二:重新编译psycopg2适配新库路径
让psycopg2重新链接到当前PostgreSQL版本的库:
- 激活目标pyenv环境:
pyenv activate 3.9.4
- 卸载现有psycopg2相关包:
pip uninstall -y psycopg2 psycopg2-binary
- 加载postgresql@14的环境变量:
eval "$(brew shellenv postgresql@14)"
- 重新安装psycopg2(推荐使用
psycopg2-binary避免编译依赖):
pip install psycopg2-binary
方法三:通过环境变量指定库路径
临时生效:在运行Python脚本前执行以下命令,告诉动态链接器优先查找目标库路径:
export DYLD_LIBRARY_PATH="/opt/homebrew/opt/postgresql@14/lib/postgresql@14:$DYLD_LIBRARY_PATH"
永久生效:将上述命令添加到你的shell配置文件(如~/.zshrc或~/.bashrc),保存后执行source ~/.zshrc(对应你的配置文件)使设置生效。
内容的提问来源于stack exchange,提问作者Fabio T.
相关产品推荐
相关产品推荐

