web-dev-qa-db-ja.com

psycopg2インストールエラー-ライブラリがロードされていません:libssl.dylib

pipを使用してvirtualenvに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インストールに関連する投稿がいくつかありますが、それらのほとんどは仮想環境にインストールすることで解決します。だから...誰か私に提案をしてもらえますか?ありがとうございました!本当に感謝。

pS psycopg2のインストールのコンパイルログが必要な場合は、お知らせください。長すぎるため、ここには貼り付けませんでした。

34
Yulong

エラーはlibssl.dylibバージョンが古すぎると言っていますか?

私のMacでは、エラーはlibssl.dylibおよびlibcrypto.dylibが古すぎてpyscopgを使用できないことです。 Macで使用されるopensslパッケージは0.98ですが、pyscopgには1.0.0以降のバージョンが必要です。

私の解決策はこれです:

  1. brewからopensslをインストールする

    $ brew install openssl
    
  2. 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/
    
  3. /usr/libディレクトリで、ソフトリンクlibssl.dylibおよびlibcrypto.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
    
97
ming.kernel

同様の問題がありました。私はAnacondaを使用してpythonといくつかのパッケージをインストールし、その後pipを使用してpsycopg2をインストールしました。psycopg2をアンインストールし、condaパッケージマネージャを使用して、ピップ。

pip uninstall psycopg2
conda install psycopg2
23
ansonw

OSX 10.11以降(El Capitan以降)でシンボリックリンクを置き換えるソリューション(上記を参照- https://stackoverflow.com/a/11911870/565525Sudo rm libssl.dylib libcrypto.dylibレポートOperation not permitted 。私のために働いた解決策は:

brew install openssl

Openssl brew libsが置かれている場所を見つけ、/usr/local/Cellar/opensslディレクトリから検索を開始します。私の場合は/usr/local/Cellar/openssl/1.0.2d_1/libにあります

最後にDYLD_LIBRARY_PATHを設定します。つまり、次のような行を.bash_profileに追加します。

# replace location of lib files with folder name you found in previous step
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/Cellar/openssl/1.0.2d_1/lib

シェルを再起動するか、単にsource ~/.bash_profileが機能するかどうかをテストします。

$ python -c"import psycopg2  ;   print('psycopg2 is now ok')"
21
Robert Lujo

あなたの答えをありがとう@khrf。

(Postgres.appの代わりに)postgresシステムインストーラーを使用している場合は、以下を使用します。

export DYLD_LIBRARY_PATH=/Library/PostgreSQL/9.3/lib

~/.bash_profile毎回入力するのを避けたい場合。

13
gozzilli

Macでは次のものが必要だと思います。

export LDFLAGS="-L/usr/local/opt/openssl/lib"
2
jiamo

PostgresAppを使用している場合は、それに応じてDYLD_LIBRARY_PATH環境変数を設定します。例:

DYLD_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib/ ../venv/bin/python manage.py syncdb
1
rslnx

Libsslおよびlibcryptoファイルの場所を見つけ、zshrcファイルでLIBRARY_PATHを設定すると機能します。

参照: clangにライブラリ検索パスを追加https://mithun.co/hacks/library-not-loaded-libcrypto-1-0-0-dylib-issue-in-mac /

0
xyzgentoo

数時間のトラブルシューティングの後、.zshrcファイルに追加された次の行が役に立ちました

export DYLD_LIBRARY_PATH=/Library/PostgreSQL/11/lib
0
Zeca