2014-12-03 111 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

    相關問題