Psycopg2 错误:找不到符号_PQbackendPID

问题描述 投票:0回答:7

我从 psycopg2 收到以下错误:

Traceback (most recent call last):   File "test1.py", line 1, in
<module>
    import psycopg2   File "/Users/xxx/Library/Python/2.7/lib/python/site-packages/psycopg2/__init__.py",
line 50, in <module>
    from psycopg2._psycopg import (                     # noqa ImportError:
dlopen(/Users/xxx/Library/Python/2.7/lib/python/site-packages/psycopg2/_psycopg.so,
2): Symbol not found: _PQbackendPID   Referenced from:
/Users/xxx/Library/Python/2.7/lib/python/site-packages/psycopg2/_psycopg.so
Expected in: flat namespace  in
/Users/eyabadal/Library/Python/2.7/lib/python/site-packages/psycopg2/_psycopg.so

关于如何解决这个问题有什么建议吗?

python pip psycopg2
7个回答
78
投票

我在 macOS 上遇到了同样的问题,并通过运行以下步骤解决了它:

  1. 卸载psycopg2:

    pip uninstall psycopg2

  2. 重新安装psycopg2:

    pip install psycopg2-binary


21
投票

我遇到了同样的问题,使用选项

psycopg2-binary
安装
--no-cache-dir
帮助了我。

pip install psycopg2-binary --no-cache-dir


3
投票

对于仍然遇到问题的人,我使用了以下方法:

pip install -i https://test.pypi.org/simple/ psycopg2-binary==2.9.3

您可以在这里找到评论:https://github.com/psycopg/psycopg2/issues/1286#issuecomment-1190350326


2
投票

我已经经历了其中的一些问题,我认为对于那些尚未解决的人应该看看潜在的问题。我猜很多人都使用 M1 Mac,并且可能安装也可能没有安装 Postgres.app。

如果将

-v
添加到
pip3 install psycopg2
的末尾,那么您将在底部看到错误源。就我而言,我得到:

  ld: warning: ignoring file /Applications/Postgres.app/Contents/Versions/14/lib/libcrypto.dylib, file is universal (x86_64,arm64) but does not contain the arm64e architecture: /Applications/Postgres.app/Contents/Versions/14/lib/libcrypto.dylib
  ld: warning: ignoring file /Applications/Postgres.app/Contents/Versions/14/lib/libpq.dylib, file is universal (x86_64,arm64) but does not contain the arm64e architecture: /Applications/Postgres.app/Contents/Versions/14/lib/libpq.dylib
  ld: warning: dylib (/Applications/Postgres.app/Contents/Versions/14/lib/libssl.dylib) was built for newer macOS version (10.12) than being linked (10.9)
  ld: warning: ld: warning: dylib (/Applications/Postgres.app/Contents/Versions/14/lib/libpq.dylib) was built for newer macOS version (10.12) than being linked (10.9)
  dylib (/Applications/Postgres.app/Contents/Versions/14/lib/libcrypto.dylib) was built for newer macOS version (10.12) than being linked (10.9)

在这里我们可以看到libpq库中缺少arm64e架构是根本原因。

要解决此问题,请指定您只需要 arm64,因为这是 libpq 中可用的。

ARCHFLAGS="-arch arm64" pip3 install psycopg2 --no-cache-dir --force-reinstall -v

如果您的警告不同,那么此建议将不适用,但它应该为您提供一些有关正在发生的情况的线索。关于为较新版本的 macOS 构建的警告不应破坏一切。忽略 libpq 库实际上应该是一个错误而不是警告。


1
投票

以上答案均不适用于 python 3.8 版本。我必须升级到 python 3.9,错误就消失了。 - 我有 12.4 macO,带有 M1 PRO 芯片


0
投票

献给还在挣扎的人们

您是否使用 PyCharm 创建 venv?

这就是我的情况的问题。我删除了 pycharm 创建的 venv,并使用

python3 -m venv /path/to/venv
手动创建了它,然后激活,
pip3 install -r requirements.txt
完美运行


0
投票

尝试安装 Django 项目时遇到类似的问题。

psycopg2cffi
无法安装,给我几乎相同的错误消息。

pip install -r requirements.txt --use-pep517
解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.