【问题标题】:Connecting to PostgreSQL database using Python not possible after brew upgradebrew 升级后无法使用 Python 连接到 PostgreSQL 数据库
【发布时间】:2023-02-14 23:04:43
【问题描述】:

我最近升级了 brew,其中一部分是对 PostgreSQL 的更新。更新成功,brew 建议将旧文件移动到不同的文件夹(我现在不记得确切的行)。

现在,当我尝试使用 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)

我尝试通过 brew 重新安装 Postgres 但没有成功。我可以使用不同的工具连接到数据库。

任何人都可以帮助我吗?

PS:显然库文件在不同的地方:

'/opt/homebrew/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib'

我该如何适应呢?

【问题讨论】:

标签: python postgresql homebrew psycopg2


【解决方案1】:

感谢@Adrian Klaver 找到了答案:

我通过以下方式创建了一个符号链接:

sudo mkdir -p /usr/local/lib && sudo ln -s /opt/homebrew/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib /usr/local/lib/libpq.5.dylib

来自this discussion

这对我有用(对于其他 PostgreSQL 版本,您需要稍微调整一下链接)

【讨论】:

    【解决方案2】:

    它试图从符号链接 /usr/lib/libpq.5.dylib 加载 libpq.5.dylib 但找不到该文件,因此您需要更新它:

    # TODO: get this from the error, after "Library not loaded:"
    SYMLINK_PATH="/usr/lib/libpq.5.dylib"
    
    # TODO: find this in your machine. The version maybe different than mine
    DESTINATION_PATH="/opt/homebrew/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib"
    
    sudo mv $SYMLINK_PATH $SYMLINK_PATH.old
    sudo ln -s $DESTINATION_PATH $SYMLINK_PATH
    

    【讨论】:

      猜你喜欢
      • 2014-12-14
      • 2014-02-14
      • 2017-01-10
      • 2017-02-24
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 2018-12-24
      相关资源
      最近更新 更多