我从 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
关于如何解决这个问题有什么建议吗?
我在 macOS 上遇到了同样的问题,并通过运行以下步骤解决了它:
卸载psycopg2:
pip uninstall psycopg2
重新安装psycopg2:
pip install psycopg2-binary
我遇到了同样的问题,使用选项
psycopg2-binary
安装 --no-cache-dir
帮助了我。
pip install psycopg2-binary --no-cache-dir
对于仍然遇到问题的人,我使用了以下方法:
pip install -i https://test.pypi.org/simple/ psycopg2-binary==2.9.3
您可以在这里找到评论:https://github.com/psycopg/psycopg2/issues/1286#issuecomment-1190350326
我已经经历了其中的一些问题,我认为对于那些尚未解决的人应该看看潜在的问题。我猜很多人都使用 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 库实际上应该是一个错误而不是警告。
以上答案均不适用于 python 3.8 版本。我必须升级到 python 3.9,错误就消失了。 - 我有 12.4 macO,带有 M1 PRO 芯片
献给还在挣扎的人们
您是否使用 PyCharm 创建 venv?
这就是我的情况的问题。我删除了 pycharm 创建的 venv,并使用
python3 -m venv /path/to/venv
手动创建了它,然后激活,pip3 install -r requirements.txt
完美运行
尝试安装 Django 项目时遇到类似的问题。
psycopg2cffi
无法安装,给我几乎相同的错误消息。
pip install -r requirements.txt --use-pep517
解决了问题。