psycopg2 安装错误 - 未加载库:libssl.dylib

新手上路,请多包涵

我尝试使用 psycopg2 pip ,编译看起来不错,它说“已成功安装 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 安装相关的帖子,但其中大部分都是通过在虚拟环境中安装来解决的。那么…有人可以给我一个建议吗?谢谢!非常感谢。

ps 如果你需要安装psycopg2的编译日志请告诉我,我没有贴在这里因为它太长了。

原文由 Yulong 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 572
1 个回答

错误是否显示 libssl.dylib 版本太旧?

在我的 Mac 上,错误是 libssl.dyliblibcrypto.dylib 对于 pyscopg 使用来说太旧了。 mac使用的 openssl 包是0.98,而pyscopg需要1.0.0以上版本。

我的解决方案是这样的:

  1. 从 brew 安装 openssl
    $ brew install openssl

  1. 复制 libssl.1.0.0.dyliblibcrypto.1.0.0.dylib/usr/local/Cellar/openssl/1.0.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/

  1. /usr/lib 目录中,创建一个软链接 libssl.dyliblibcrypto.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

原文由 ming.kernel 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题