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

时间:2015-02-14 13:12:20

标签: python eclipse macos postgresql psycopg2

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

我发现了很多问题:

  1. 第一个问题sudo pip3.4 install psycopg2无效,显示以下消息
  2.   

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

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

    1. 当我在我的项目中输入psycopg2时,我想:
    2.   

      导入错误:   的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

      1. 现在我正在获取:
      2.   

        导入错误:   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

        你能帮助我吗?

8 个答案:

答案 0 :(得分:75)

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

答案 1 :(得分:27)

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

答案 2 :(得分:7)

我可以使用psycopg2-binary而不是psycopg2在Mac(运行Catalina,10.15.3)上修复此问题。

pip3 uninstall psycopg2 pip3 install psycopg2-binary

答案 3 :(得分:4)

我正在使用优胜美地,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

答案 4 :(得分:3)

这是一个针对El Capitan的修复程序,它不需要重新启动来解决OS X El Capitan系统完整性保护(SIP):

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

H/T Farhan Ahmad

答案 5 :(得分:1)

在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

完美无缺!

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

对于那些无法使用@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