Python 未加载导入psycopg2库:libssl.1.0.0.dylib

Python 未加载导入psycopg2库:libssl.1.0.0.dylib,python,database,postgresql,python-2.7,postgresql-9.3,Python,Database,Postgresql,Python 2.7,Postgresql 9.3,当我尝试运行该命令时: import psycopg2 我得到一个错误: ImportError: dlopen(/Users/gwulfs/anaconda/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: libssl.1.0.0.dylib Referenced from: /Users/gwulfs/anaconda/lib/python2.7/site-packages/psycop

当我尝试运行该命令时:

import psycopg2
我得到一个错误:

ImportError: dlopen(/Users/gwulfs/anaconda/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: libssl.1.0.0.dylib
  Referenced from: /Users/gwulfs/anaconda/lib/python2.7/site-packages/psycopg2/_psycopg.so
  Reason: image not found
到目前为止,我已尝试
brew安装openssl
,并参考了以下内容(运气不佳):

编辑:潜在危险,请先阅读评论

请参阅下面更安全的答案:


我在你发了一个小时后就遇到了这个问题,我刚刚想出来。我正在使用Mac OS X Yosemite、Python 2.7和Postgresql应用程序

默认情况下似乎设置了一个不工作的符号链接(或者我在故障排除时引入了它),要修复它,请先删除不正确的链接:

$ sudo rm /usr/lib/libssl.1.0.0.dylib
$ sudo rm /usr/lib/libcrypto.1.0.0.dylib
然后将它们重新链接到(将您的用户名替换为您的Mac用户名。我发现使用tab完成每个步骤,确认目录很有帮助):


我相信其他解决方案对您不起作用,因为您的版本在anaconda中。

不要在系统库目录中使用符号链接,而是将
$DYLD\u FALLBACK\u library\u PATH
设置为包含anaconda库。例如:

export DYLD_FALLBACK_LIBRARY_PATH=$HOME/anaconda/lib/:$DYLD_FALLBACK_LIBRARY_PATH

我不得不稍微改变斯科特·布伦斯图尔的回答: 1.删除断开的符号链接:

$ sudo rm /usr/lib/libssl.1.0.0.dylib
$ sudo rm /usr/lib/libcrypto.1.0.0.dylib
$ sudo rm /usr/lib/libpq.5.dylib
  • 与postgres包含的驱动程序重新链接:

  • 执行以下操作以解决未加载的库:libssl.1.0.0.dylib错误(如果您在/usr/local/ceral目录中有openssl)

  • sudo cp/usr/local/ceral/openssl//lib/libssl.1.0.0.dylib/usr/lib

  • 执行步骤1后,如果仍然未加载库:libcrypto.1.0.0.dylib错误。执行以下操作
    sudo cp/usr/local/ceral/openssl//lib/libcrypto.1.0.0.dylib/usr/lib


  • 我尝试了pip安装psycopg2,它也出现了类似的问题。 然后我尝试了conda安装psycopg2,它成功了!
    另外,请确保您使用的pip属于anaconda(哪个pip)

    与上面X.L.的答案相关,我不想在已经使用pip的情况下使用anaconda,所以我只给了它一条通往Postgres库的路径,该库对我有用(我在Mac OS 10.10上使用PostgreSQL.app)


    康达安装psycopg为我工作。它更新了以下软件包 将更新以下软件包:

    conda:      3.19.1-py27_0 --> 4.0.5-py27_0
    openssl:    1.0.2f-0      --> 1.0.2g-0
    pip:        8.0.2-py27_0  --> 8.1.0-py27_0
    setuptools: 19.6.2-py27_0 --> 20.2.2-py27_0
    wheel:      0.26.0-py27_1 --> 0.29.0-py27_0
    

    在将我的头撞在墙上几个小时后,这两种解决方案肯定会奏效:

    选项1。这解决了我们的问题,而不会混淆环境变量。在shell中运行此命令:

    brew install --upgrade openssl
    brew unlink openssl && brew link openssl --force
    
    轰!这将升级
    /usr/local
    libssl
    libcrypto
    的符号链接。现在,
    import psycopg2
    就像一个魔咒一样工作

    选项2。如果出于某种原因,您希望在
    usr/local
    中维护当前符号链接,请在shell中运行以下命令:

    brew install --upgrade openssl
    brew unlink openssl && brew link openssl --force
    
    export DYLD\u FALLBACK\u LIBRARY\u PATH=$HOME/anaconda/lib/:$DYLD\u FALLBACK\u LIBRARY\u PATH

    只需确保用实际的lib路径替换上面的
    $HOME/anaconda/lib
    。在我的例子中,这是
    $HOME/miniconda2/envs/ali/lib

    这只适用于您当前所在的shell/bash会话。要使更改持久化,请将
    export
    语句添加到
    ~/.bash\u配置文件
    ~/.bashrc
    文件中


    想法:IMO#1是解决此问题的正确方法,但我离开了#2,以防有些人更喜欢使用环境变量而不是修复符号链接(例如,如果他们的软件依赖于较旧的openssl文件版本).

    我的设置风格与OP有点不同:我在Mac上使用
    Postgres.app
    ,在
    virtualenv
    中使用am;但症状相似

    对我来说,这是在本地将我的
    Postgres.app
    从9.3更新到9.5之后发生的,错误清楚地显示了
    libssl.1.0.0的
    psycopg2
    路径。dylib
    指向旧的9.3数据目录位置(此错误中引用的
    image
    )。在我的
    ENV
    中添加奇怪的东西,或者删除符号链接,我不确定这样做的影响对我来说肯定是不对的。我通过卸载然后重新安装
    psycopg2
    解决了这个问题,方法与我在工作时的方法相同-一点都不觉得很危险:

     # In my virtualenv
     pip uninstall psycopg2
     pip install psycopg2
    

    那我就好了

    在自制软件不允许我强制使用link
    openssl
    之后,以下功能运行良好:

    pip install --global-option=build_ext \
                --global-option="-I/usr/local/opt/openssl/include" \
                --global-option="-L/usr/local/opt/openssl/lib" psycopg2
    

    (这个安装在macOS上成功地安装了一个
    virtualenv

    我在Mac上遇到了这个问题,尝试ln-s让我 ln:/usr/lib/libssl.1.0.0.dylib:不允许操作 我不想弄乱我的系统。相反,对我有效的方法是简单地安装psycopg2二进制文件: pip安装psycopg2二进制文件


    在尝试了一天多之后,我找到了下面的解决方案

    • brew重新安装openssl@1.0
    • 禁用csrutil->google it如何禁用它,以便我们可以复制一些内容
      至/usr/lib
    • 将libssl.1.0.0.dylib复制到/usr/lib 我做到了-sudo cp /usr/local/ceral/openssl/1.0.2s/lib/libssl.1.0.0.dylib/usr/lib
    • 将libcrypto.1.0.0.dylib复制到/usr/lib 我做到了-sudo cp /usr/local/ceral/openssl/1.0.2s/lib/libcrypto.1.0.0.dylib/usr/lib
    类似地,如果您面临库未加载的问题:libssl.1.0.0.dylib
    只需将openssl的版本从1.0更改为1.1,并将libssl.1.1改为libssl.1.0,将libcrypto.1.1改为libcrypto.1.0.0

    完成,您已准备好在mac中享受psycopg2。

    我正在使用mac OS Sierra: 得到了这个错误:

     Library not loaded: libssl.1.1.dylib
    
    我在伦敦发现了这个图书馆

     /Library/PostgreSQL/11/lib
    
    我在internet上找到了此解决方案:

     export DYLD_LIBRARY_PATH=/Library/PostgreSQL/11/lib
    
    但这并不是一个永久的解决方案。因为每当我重新启动服务器时,我都必须运行上面的命令

    添加行: 导出动态库路径=/LIBRARY/PostgreSQL//lib

    ~/.bash_profile

    对我有效的解决方案(没有)
     /Library/PostgreSQL/11/lib
    
     export DYLD_LIBRARY_PATH=/Library/PostgreSQL/11/lib
    
    brew install --upgrade openssl
    brew unlink openssl && brew link openssl --force
    
    brew upgrade openssh
    
    brew upgrade postgresql
    
    pip install psycopg2-binary -t PATH
    
    /Users/my_name/Library/Python/3.7/lib/python/site-packages
    
    brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/64555220bfbf4a25598523c2e4d3a232560eaad7/Formula/openssl.rb -f
    
      pip install psycopg2-binary
    
      export LDFLAGS="-L/usr/local/opt/openssl/lib"
      export CPPFLAGS="-I/usr/local/opt/openssl/include"
    
      pip install psycopg2 --upgrade