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

标签 python virtualenv psycopg2

我尝试使用 pip 在 vi​​rtualenv 中安装 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.dyliblibcrypto.dylib 太旧,pyscopg 无法使用。 mac使用的openssl包是0.98,而pyscopg需要1.0.0或更高版本。

我的解决办法是这样的:

  1. 从 brew 安装 openssl

    $ brew install openssl
    
  2. /usr/local/Cellar/openssl/1.0 复制 libssl.1.0.0.dyliblibcrypto.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/
    
  3. /usr/lib目录下,软链接(soft link)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
    

关于python - psycopg2 安装错误 - 库未加载 : libssl. dylib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11365619/

相关文章:

python - 从没有索引的列表中删除元素

python - 在shinyapps.io 上使用 python 3 in reticulate

python - 根据行值返回列的平均值

python - 从 virtualenv 环境中隐藏 Mac OS X 开发工具

string - 为什么我无法通过使用 psycopg2 使用 cursor.execute 查询字符串来获得响应?

python - 有什么理由不使用自动提交吗?

algorithm - 查找字符串是否与 Python 中该类型对象列表中对象的属性值匹配的最短方法

python - 如何在另一台电脑上使用python虚拟环境

python - SQLAlchemy:如何在 Python 中以不同于数据库的方式表示数据

python - 如何自动安装本地 "development mode"包?