我在这个问题上已经纠结了一段时间了。在我的Mac上安装了psycpg 2之后,我让一个朋友帮我安装了它:
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip3 install psycopg2
然后我导入了psycopg 2
我试着运行我的db程序,得到了这个错误:
Traceback (most recent call last):
File "postgresdemo.py", line 1, in <module>
import psycopg2
File "/Users/nkosana/Library/Python/3.7/lib/python/site-packages/psycopg2/__init__.py", line 51, in <module>
from psycopg2._psycopg import ( # noqa
ImportError: dlopen(/Users/nkosana/Library/Python/3.7/lib/python/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so, 2): Symbol not found: _PQencryptPasswordConn
Referenced from: /Users/nkosana/Library/Python/3.7/lib/python/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so
Expected in: /usr/lib/libpq.5.dylib in /Users/nkosana/Library/Python/3.7/lib/python/site-packages/psycopg2/_psycopg.cpython-37m-darwin.so
系统及版本
MacOS Catalina (10.15.4)
psycopg2-2.8.5
简体中文
我将非常感谢你的帮助,先谢谢你。
3条答案
按热度按时间jgovgodb1#
我遇到了和你一样的问题:
对我有用的是将/usr/local/lib添加到PATH中,并创建一个从我的PostgreSQL/lib到/usr/local/lib的符号链接
有一个解决这个库错误的答案,并且更好地解释了为什么会发生这种情况以及如何在这里修复它Mac OS X Lion Psycopg2: Symbol not found: _PQbackendPID
8xiog9wr2#
here的,为我工作。macOS Catalina 版本10.15.7。简体中文
xa9qqrwz3#
bgar2021提出的
ln -s
解决方案无法工作,因为OP案例中的.dylib
文件应该在/usr/lib
中,而不是/usr/local/lib
中,并且由于SIP保护,您无法更改/usr/lib
中的.dylib
链接或文件(并且绝对不建议禁用SIP保护)。在OP的情况下,内置的MacOS
install_name_tool
命令应该可以工作,这也是因为.so
文件已经使用venv
放入了项目文件夹中。我建议您使用venv,这样您就可以在project文件夹中拥有
.so
的本地版本,这样修改起来更安全。如果您这样做,您可以通过使用MacOS中的内置install_name_tool
来告诉.so
文件应该使用正确的.dylib
文件来轻松解决这个问题。此时,您可以使用
venv``中的
pip tool`在项目文件夹中安装更新版本的postgres,例如postgresql@14因此,你可以通过这样做来解决:
请替换假名(例如“yourproject”)与您选择的名称和双重检查,因为我可能犯了错别字。
希望这能帮上忙。