【发布时间】:2022-01-04 21:06:43
【问题描述】:
我正在 Python (3.9.9) 中构建一个简单的 DB 接口,我正在使用 psycopg (3.0.7) 连接到我的 Postgres (14.1) 数据库。直到最近,这个应用程序的开发都是在 Linux 上进行的,但现在我在 M1 Mac mini 上使用 macOS Monterey。这似乎对 psycopg 广泛使用的 ctypes 造成了一些麻烦。我得到的错误如下:
ImportError: no pq wrapper available.
Attempts made:
- couldn't import psycopg 'c' implementation: No module named 'psycopg_c'
- couldn't import psycopg 'binary' implementation: No module named 'psycopg_binary'
- couldn't import psycopg 'python' implementation: libpq library not found
基于source code of psycopg,这是 ctypes 无法使用 util.find_library libpq.dylib 的错误。 Postgres 安装为 Postgres.app,也就是说 libpq.dylib 的路径是
/Applications/Postgres.app/Contents/Versions/14/bin/lib
我尝试将它添加到 PATH,但它不起作用。然后我在 /usr/local/lib 中创建了一个指向路径的符号链接,但是(不出所料)它也不起作用。然后我做了一些挖掘,发现this issue 描述了同样的问题。我不是 macOS 专家,所以我不确定如何解释提出的一些观点。我需要将路径添加到共享缓存吗?另外,我不想分叉 Python 存储库并按照建议实现 dlopen() 方法,因为它似乎会导致其他问题。
无论如何,有没有快速绕过这个问题的解决方案?作为附加参考,产生上述错误的代码只是:
import psycopg
print(psycopg.__version__)
【问题讨论】:
-
您可以尝试为 bin 包安装
pip install "psycopg[binary]"。否则,这个库可能不支持 m1。可能相关issue。 -
感谢您的回答!我刚刚检查过,根据 psycopg3 的文档,M1 Macs (psycopg.org/psycopg3/docs/basic/install.html) 不支持
pip install "psycopg[binary]"。
标签: python macos ctypes apple-m1 psycopg3