在Mac OS上使用psycopg2的问题(优胜美地)

目前我正在python中安装psycopg2在eclipse中工作。

我发现很多问题:

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

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

修复: export PATH=/Library/PostgreSQL/9.4/bin/:"$PATH”

  1. 当我在我的项目中导入psycopg2我obtein:

ImportError: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. 现在我正在获得:

ImportError: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预计位于/Library/Frameworks/Python.framework/Versions/3.4/lib中的/usr/lib/libpq.5.dylib /python3.4/site-packages/psycopg2/_psycopg.so

你可以帮我吗?

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

我正在使用优胜美地,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 Capitan系统完整性保护(SIP)问题:

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

H / T Farhan Ahmad

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

 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 

它完美的作品!

好吧,我想给我的解决scheme,问题是与C的版本有关。 所以,我只是input:

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

对于El Capitan的那些不能使用@ KungFuLucky7的答案的人,我用下面的方法来解决这个问题(根据需要调整path来匹配你的)。

 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