Flask连接PostgreSQL时缺失libpq.5库的报错问题
Flask连接PostgreSQL缺失libpq.5库的解决方法
错误日志
回溯(最近的调用最后): 文件 "/Users/noelsjacob/Desktop/Projects/pgflask/main.py",第3行,在<module>中 app = create_app() ^^^^^^^^^^^^ 文件 "/Users/noelsjacob/Desktop/Projects/pgflask/Mautourco/__init__.py",第10行,在create_app中 db.init_app(app) 文件 "/Users/noelsjacob/.local/share/virtualenvs/pgflask-3P3nCHJ0/lib/python3.11/site-packages/flask_sqlalchemy/extension.py",第326行,在init_app中 engines[key] = self._make_engine(key, options, app) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件 "/Users/noelsjacob/.local/share/virtualenvs/pgflask-3P3nCHJ0/lib/python3.11/site-packages/flask_sqlalchemy/extension.py",第614行,在_make_engine中 return sa.engine_from_config(options, prefix="") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件 "/Users/noelsjacob/.local/share/virtualenvs/pgflask-3P3nCHJ0/lib/python3.11/site-packages/sqlalchemy/engine/create.py",第804行,在engine_from_config中 return create_engine(url, **options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件 "<string>",第2行,在create_engine中 文件 "/Users/noelsjacob/.local/share/virtualenvs/pgflask-3P3nCHJ0/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py",第283行,在warned中 return fn(*args, **kwargs) # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^ 文件 "/Users/noelsjacob/.local/share/virtualenvs/pgflask-3P3nCHJ0/lib/python3.11/site-packages/sqlalchemy/engine/create.py",第601行,在create_engine中 dbapi = dbapi_meth(**dbapi_args) ^^^^^^^^^^^^^^^^^^^^^^^^ 文件 "/Users/noelsjacob/.local/share/virtualenvs/pgflask-3P3nCHJ0/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/psycopg2.py",第669行,在import_dbapi中 import psycopg2 文件 "/Users/noelsjacob/.local/share/virtualenvs/pgflask-3P3nCHJ0/lib/python3.11/site-packages/psycopg2/__init__.py",第51行,在<module>中 from psycopg2._psycopg import ( # noqa 导入错误:dlopen(/Users/noelsjacob/.local/share/virtualenvs/pgflask-3P3nCHJ0/lib/python3.11/site-packages/psycopg2/_psycopg.cpython-311-darwin.so, 0x0002): 未加载库: '@rpath/libpq.5.dylib' 引用自: '/Users/noelsjacob/.local/share/virtualenvs/pgflask-3P3nCHJ0/lib/python3.11/site-packages/psycopg2/_psycopg.cpython-311-darwin.so' 原因: 尝试路径: '/opt/homebrew/lib/libpq.5.dylib' (不存在), '/opt/homebrew/lib/libpq.5.dylib' (不存在), '/usr/local/lib/libpq.5.dylib' (不存在), '/usr/lib/libpq.5.dylib' (不存在)
解决步骤
安装PostgreSQL客户端库
用Homebrew安装包含libpq的PostgreSQL工具包:brew install postgresql安装完成后,libpq.5.dylib会被放置在
/opt/homebrew/lib目录下。修复库路径(已安装但仍报错时)
如果已安装PostgreSQL但路径未生效,执行强制链接命令:brew link --force postgresql或临时设置环境变量让系统定位到库:
export DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH若要永久生效,将上述环境变量添加到shell配置文件(如
~/.zshrc或~/.bash_profile):echo 'export DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH' >> ~/.zshrc source ~/.zshrc重新安装psycopg2
之前安装的psycopg2可能基于缺失的库编译,卸载后重新安装预编译版本更省心:pip uninstall psycopg2 pip install psycopg2-binary
内容的提问来源于stack exchange,提问作者Noel S Jacob
相关产品推荐
相关产品推荐

