在Mac OS(Yosemite)上使用psycopg2时出现问题



目前我正在安装psycopg2,以便在eclipse中使用python。

我发现了很多问题:

  1. 第一个问题sudo pip3.4 install psycopg2不工作,它显示以下消息

错误:找不到pg_config可执行文件。

固定为:export PATH=/Library/PostgreSQL/9.4/bin/:"$PATH”

  1. 当我在我的项目中导入psycopg2时,我发现:

导入错误:dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/Python.3.4/site-packages/psycopg2/_psycopg.so库libssl1.0.0.dylib库libcrypto.1.0.0.dylib

固定为:sudo ln -s /Library/PostgreSQL/9.4/lib/libssl.1.0.0.dylib /usr/lib sudo ln -s /Library/PostgreSQL/9.4/lib/libcrypto.1.0.0.dylib /usr/lib

  1. 现在我获得了:

导入错误:dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/Python.3.4/site-packages/psycopg2/psycopg.so,2) :未找到符号:_lo_lseek64引用自:/Library/Frameworks/Python.framework/Versions/3.4/lib/Python.3.4/site-packages/psycopg2/_psycopg.so应在中的/usr/lib/libpq.5.dylib中/Library/Frameworks/Python.framework/Versions/3.4/lib/Python.3.4/site-packages/psycopg2/_psycopg.so

你能帮我吗?

您需要替换/usr/lib/libpq.5.dylib库,因为它的版本太旧了
这是我解决这个问题的方法:

$ sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old  
$ sudo ln -s /Library/PostgreSQL/9.4/lib/libpq.5.dylib /usr/lib

如果您使用PostgresApp,您需要运行以下两个命令:

sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old
sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib

我能够在我的Mac(运行Catalina,10.15.3)上通过使用psycopg2二进制文件而不是psycopg2来解决这个问题。

pip3 uninstall psycopg2 pip3 install psycopg2-binary

我使用的是yosemite,postgres.app&django。这让psycopg2为我正确加载,但唯一的区别是我的libpq.5.dylib文件在/Applications/Postgres.app/Contents/Versions/9.4/lib中。

因此我的第二行是sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib

这是一个在El Capitan上对我有效的修复程序,它不需要重新启动即可绕过OS X El Capita系统完整性保护(SIP):

brew unlink postgresql && brew link postgresql
brew link --overwrite postgresql

H/T Farhan Ahmad

对于那些不能使用@KungFuLucky7答案的El Capitan用户,我使用了以下方法来解决问题(根据需要调整路径以匹配您的路径)。

sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.5/lib/libpq.5.dylib /usr/local/lib/python2.7/site-packages/psycopg2/_psycopg.so

在El Capitan中,我使用了与@Forbze相同的解决方案,但又使用了两个命令,如下所示。

sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.3/lib/libpq.5.dylib  /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
sudo install_name_tool -change libssl.1.0.0.dylib /Library/PostgreSQL/9.3/lib/libssl.1.0.0.dylib  /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
sudo install_name_tool -change libcrypto.1.0.0.dylib /Library/PostgreSQL/9.3/lib/libcrypto.1.0.0.dylib  /Library/Python/2.7/site-packages/psycopg2/_psycopg.so

它工作得很好!

好吧,我想给出我的解决方案,这个问题与c的版本有关。所以,我只键入:

CFLAGS='-std=c99' pip install psycopg2==2.6.1

最新更新