2014-12-03 116 views
34

当我尝试运行命令:导入psycopg2库未加载:libssl.1.0.0.dylib

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 install openssl和已引用(没有运气):

psycopg2 installation error - Library not loaded: libssl.dylib

http://joshuakehn.com/2013/10/13/Postgresapp-and-psycopg2-on-OS-X.html

Psycopg2 image not found

+4

如果您使用的是OS的bash(默认shell X),将以下行添加到'〜/ .bash_profile':'export DYLD_FALLBACK_LIBRARY_PATH = $ HOME/anaconda/lib:$ DYLD_FALLBACK_LIBRARY_PATH'。或者如果您使用的是鱼壳,请将以下内容添加到您的'config.fish'(通常位于'〜/ .config/fish/config.fish'):'set -x DYLD_FALLBACK_LIBRARY_PATH $ HOME/anaconda/lib $ DYLD_FALLBACK_LIBRARY_PATH'。 – Answeror 2015-04-10 16:55:30

+2

同样的问题,在这个岗位解决:http://stackoverflow.com/questions/23944770/uwsgi-can-not-load-libssl-1-0-0-dylib/23945292#23945292 – 2015-07-18 13:59:57

+0

@邢市是正确的!请不要混淆符号链接(在其他帖子中提到这个问题),甚至是环境变量('$ DYLD_FALLBACK_PATH')。看看我的解决方案如下:http://stackoverflow.com/a/36872624/5076471 – alichaudry 2016-04-26 18:11:34

回答

30

编辑:潜在的危险,第一次读到评论!

见下面一个更安全的答案:https://stackoverflow.com/a/30726895/308315


你张贴,只是琢磨出来后,我就遇到了这个问题的确切大约一个小时。我正在使用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 

然后重新将它们链接(更换YOURUSERNAME 。与Mac的用户名,我发现它有助于使用标签来完成每一个步骤,确认目录):

$ sudo ln -s /Users/YOURUSERNAME/anaconda/lib/libssl.1.0.0.dylib /usr/lib 
$ sudo ln -s /Users/YOURUSERNAME/anaconda/lib/libcrypto.1.0.0.dylib /usr/lib 

我相信其他的解决方案并没有为你工作,因为你的版本是蟒蛇。

+1

我唯一担心的是,你现在可能会结束使用这些库的anaconda版本,而不是操作系统版本,甚至对于不是python或anaconda的应用程序。 – ipaul 2015-03-12 20:55:21

+3

不要rm,只是mv。您可能会发现,您实际上没有要在下一步中链接到的文件。 – 2015-06-25 05:19:51

+7

不要这样做。这样做很容易破坏你的系统。 – asmeurer 2015-08-24 16:16:48

60

而不是在系统库dirs中播放符号链接,请将$DYLD_FALLBACK_LIBRARY_PATH设置为包含anaconda库。例如:

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

宇这个工程!我认为这应该是被接受的答案。另一个看起来很危险。 – 2015-12-28 21:08:16

+1

这也适用于我!我在Mac OS X El Capitan上使用了带有psycopg2的anaconda python。 – mgig 2016-01-14 19:28:37

+1

非常感谢。在找到这个之前,在stackoverflow上至少打了7个答案。与anaconda和El Captain同样的情况。很高兴在阅读上面的答案之前阅读了评论。 – 2016-04-18 09:53:49

4

我不得不改变斯科特Brennstuhl的回答一点: 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的包括驱动程序:
  • $ sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libssl.1.0.0.dylib /usr/lib  
    $ sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libcrypto.1.0.0.dylib /usr/lib 
    $ sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib 
    
    2

    执行以下操作来解决库未LO交锋:libssl.1.0.0.dylib错误如果你有OpenSSL的在/ usr /本地/酒窖目录

    1. sudo cp /usr/local/Cellar/openssl/<<version>>/lib/libssl.1.0.0.dylib /usr/lib

    2. After doing step 1, if you still get Library not loaded:libcrypto.1.0.0.dylib error. Do the following
          sudo cp /usr/local/Cellar/openssl/<<version>>/lib/libcrypto.1.0.0.dylib /usr/lib

    1

    我试着PIP安装psycopg2这是给类似的问题。 然后我试着conda安装psycopg2,它工作! 还要确保您使用的点属于anaconda(哪个点)

    5

    关于X.L.在上面的答案中,我不想在使用pip时使用Anaconda,所以我只是给了Postgres库的路径(我在Mac OS 10.10上使用PostgreSQL.app)。 ..

    export DYLD_FALLBACK_LIBRARY_PATH=/Library/PostgreSQL/9.5/lib:$DYLD_FALLBACK_LIBRARY_PATH 
    
    11

    conda install 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 
    
    +0

    这对我也适用。我有同样的问题,我以前做了'''PIP安装psycopg2'''与畅达PIP:'''$这点子#//蟒蛇/斌/ pip''' – gabeno 2016-06-07 09:07:56

    18

    扑我的头撞在墙上了几个小时后,这两种解决方案,保证工作:

    选项1.这解决了我们的问题,而没有搞乱环境变量。在你的外壳上运行这个:

    brew install --upgrade openssl 
    brew unlink openssl && brew link openssl --force 
    

    Boom!这将升级/usr/locallibssllibcrypto的符号链接。现在import psycopg2工程就像一个魅力。

    选项2.如果由于某种原因,你想保持目前的符号链接usr/local,在你的shell中运行以下命令:

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

    只要确保更换$HOME/anaconda/lib以上的实际的lib路径。在我的情况下,这是$HOME/miniconda2/envs/ali/lib

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

    想法: IMO#1是处理这个问题的正确方法,但我留下了#2以防万一有人喜欢使用环境变量而不是修复符号链接(例如,他们有软件与依赖于旧的openssl文件版本)。

    +0

    在酿造的输出的建议,我不得不第二行更改为: – uchuugaka 2016-08-06 13:58:00

    +0

    '冲泡取消链接的OpenSSL &&酿造环节--overwrite OpenSSL的--force' – uchuugaka 2016-08-06 13:58:16

    +1

    试图解决双方1和@ uchuugaka的解决方案失败对我来说:我在OSX塞拉利昂,当我尝试运行任那些'brew link'命令,我得到一个错误:'链接桶只有openssl意味着你可能最终链接到不安全的[...]' – dwanderson 2016-12-22 16:02:59

    3

    我的安装程序的风格与OP有点不同:我在Mac上使用Postgres.app,并且在virtualenv;但症状相似。

    对于我来说,发生这种情况更新我Postgres.app从9.3到9.5的我的地方之后,错误清楚地表明了libssl.1.0.0.dylibpsycopg2路径是指向旧9.3数据目录位置(在此错误引用的image?) 。添加奇怪的东西到我的ENV或删除符号链接我不确定这种影响对我来说绝对不适合。我解决它通过卸载,然后重新安装psycopg2以同样的方式,当它工作,我有 - 这不会觉得很危险可言:

    # In my virtualenv 
    pip uninstall psycopg2 
    pip install psycopg2 
    

    然后,我都好!

    7

    后家酿不肯让我强制链接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

    +1

    这是为我工作的解决方案,使我可以让pip知道我的Homebrew库。 – huyz 2017-03-24 13:42:15

    +0

    这也适用于我。我用virtualenv(不是conda)使用brew安装的python, – 2017-11-14 22:15:31

    相关问题