在 Mac OS (Yosemite) 上使用 psycopg2 的问题

Posted

技术标签:

【中文标题】在 Mac OS (Yosemite) 上使用 psycopg2 的问题【英文标题】:Problems using psycopg2 on Mac OS (Yosemite) 【发布时间】:2015-04-15 11:04:25 【问题描述】:

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

我发现了很多问题:

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

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

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

    当我在我的项目中导入 psycopg2 时,我得到:

导入错误: dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so 库 libssl.1.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

    现在我得到:

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

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

我能够通过使用 psycopg2-binary 而不是 psycopg2 在我的 Mac(运行 Catalina,10.15.3)上解决此问题。

pip3 uninstall psycopg2 pip3 install psycopg2-binary

【讨论】:

在 Catalina 上也为我工作【参考方案2】:

在 El Capitan 中,我使用了与 @Forbze 相同的解决方案,但还有以下 2 个命令。

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

效果很好!

【讨论】:

【参考方案3】:

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

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

H/T Farhan Ahmad

【讨论】:

在我的 OS X Yosemite 10.10.3 上,我必须添加 -force 并且不需要 --overwrite:brew unlink postgresql94 && brew link -force postgresql94 使用官方 Postgresql 安装 .dmg 对我造成了其中一些错误。使用 brew 重新安装似乎可以解决问题。【参考方案4】:

对于那些在 El Capitan 上无法使用 @KungFuLucky7 答案的人 - 我使用以下方法解决了问题(根据需要调整路径以匹配您的路径)。

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

【讨论】:

【参考方案5】:

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

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

【讨论】:

在 El Capitan 上,当我使用这个版本的 psycopg2 时它有所帮助:CFLAGS='-std=c99' pip install psycopg2==2.6【参考方案6】:

如果您使用的是 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

【讨论】:

这对我有用。但我正在谨慎行事。我不清楚的是,这会如何影响我系统上的其他应用程序,这些应用程序依赖于安装在我的系统(OSX Mavericks)上的先前版本的 PostgreSQL。 这对我有用。我之前安装了一个 Postgresql,然后我安装了 PostgreSQL 应用程序,当我卸载以前的安装时出现了同样的错误。这个问题解决了我的问题,不知道为什么,但是荣誉!【参考方案7】:

我正在使用 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

【讨论】:

您是否运行了第一行来移动旧库?【参考方案8】:

您需要替换 /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

【讨论】:

谢谢@KungFuLucky7 我会试试的,我会说你的 升级到优胜美地后这对我有用。如果您使用的是 postgres 应用程序,那么第二个命令应该是:sudo ln -s /Applications/Postgres.app/Contents/MacOS/lib/libpq.5.dylib /usr/lib 我看到 ln: /usr/lib/libpq.5.dylib: Operation not allowed 太棒了:***.com/questions/32659348/…。所以我必须进入恢复模式,禁用系统完整性保护,然后重新链接库。

以上是关于在 Mac OS (Yosemite) 上使用 psycopg2 的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在Mac OS X Yosemite上安装 jdk 1.6 开发环境

Ruby cairo gem 无法在 Mac OS X Yosemite 上安装

获取在 mac OS X Yosemite 上运行的 localhost

在 Mac OS X Yosemite 上安装 Python3

sh 在Mac OS X Yosemite黑暗菜单栏上修复Google相册备份图标

转在VMware中安装OS X Yosemite