我尝试使用 pip
在 virtualenv 中安装 psycopg2
,编译看起来没问题,它说“成功安装 psycopg2”,但是当我尝试在 python 中导入它时解释器(在 virtualenv 中),它表示错误:
File "<stdin>", line 1, in <module>
File "/Users/me/sites/env/trackmap/lib/python2.7/site-packages/psycopg2/__init__.py", line 67, in <module>
from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: dlopen(/Users/me/sites/env/trackmap/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: libssl.dylib
Referenced from: /Users/me/sites/env/trackmap/lib/python2.7/site-packages/psycopg2/_psycopg.so
Reason: Incompatible library version: _psycopg.so requires version 1.0.0 or later, but libssl.0.9.8.dylib provides version 0.9.8
问题是我之前在我的其他虚拟环境中使用 pip
成功安装了它,就像几周前一样,并让它在我的 mac 上与 postgresql
一起工作。我想知道这是否是编译器的问题?在安装 psycopg2 的过程中,我看到了一些警告,例如 shortens from 64-bit to 32-bit
。我的编译器是 i686-apple-darwin11-llvm-gcc-4.2
,mac os x lion 上的默认编译器。
我看到了几篇与 psycopg2
安装相关的帖子,但其中大部分都是通过在虚拟环境中安装来解决的。所以……有人可以给我一个建议吗?谢谢!真的很感激。
附言如果需要安装psycopg2的编译日志,请告诉我,因为太长我没有贴在这里。
最佳答案
报错是不是说libssl.dylib
版本太旧了?
在我的 Mac 上,错误是 libssl.dylib
和 libcrypto.dylib
太旧,pyscopg 无法使用。 mac使用的openssl
包是0.98,而pyscopg需要1.0.0或更高版本。
我的解决办法是这样的:
从 brew 安装 openssl
$ brew install openssl
从
/usr/local/Cellar/openssl/1.0 复制
到libssl.1.0.0.dylib
和libcrypto.1.0.0.dylib
.1c/usr/lib/
$ cd /usr/local/Cellar/openssl/1.0.1c/lib $ sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/lib/
在
/usr/lib
目录下,软链接(soft link)libssl.dylib
和libcrypto.dylib
。您可能需要删除现有链接。$ sudo rm libssl.dylib libcrypto.dylib $ sudo ln -s libssl.1.0.0.dylib libssl.dylib $ sudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib
关于python - psycopg2 安装错误 - 库未加载 : libssl. dylib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11365619/