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のインストールのコンパイルログが必要な場合は、お知らせください。長すぎるため、ここには貼り付けませんでした。
エラーはlibssl.dylib
バージョンが古すぎると言っていますか?
私のMacでは、エラーはlibssl.dylib
およびlibcrypto.dylib
が古すぎてpyscopgを使用できないことです。 Macで使用されるopenssl
パッケージは0.98ですが、pyscopgには1.0.0以降のバージョンが必要です。
私の解決策はこれです:
brewからopensslをインストールする
$ brew install openssl
libssl.1.0.0.dylib
とlibcrypto.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/
/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
同様の問題がありました。私はAnacondaを使用してpythonといくつかのパッケージをインストールし、その後pipを使用してpsycopg2をインストールしました。psycopg2をアンインストールし、condaパッケージマネージャを使用して、ピップ。
pip uninstall psycopg2
conda install psycopg2
OSX 10.11以降(El Capitan以降)でシンボリックリンクを置き換えるソリューション(上記を参照- https://stackoverflow.com/a/11911870/565525 )Sudo 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')"
あなたの答えをありがとう@khrf。
(Postgres.appの代わりに)postgresシステムインストーラーを使用している場合は、以下を使用します。
export DYLD_LIBRARY_PATH=/Library/PostgreSQL/9.3/lib
~/.bash_profile
毎回入力するのを避けたい場合。
Macでは次のものが必要だと思います。
export LDFLAGS="-L/usr/local/opt/openssl/lib"
PostgresAppを使用している場合は、それに応じてDYLD_LIBRARY_PATH環境変数を設定します。例:
DYLD_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib/ ../venv/bin/python manage.py syncdb
Libsslおよびlibcryptoファイルの場所を見つけ、zshrcファイルでLIBRARY_PATHを設定すると機能します。
参照: clangにライブラリ検索パスを追加https://mithun.co/hacks/library-not-loaded-libcrypto-1-0-0-dylib-issue-in-mac /
数時間のトラブルシューティングの後、.zshrc
ファイルに追加された次の行が役に立ちました
export DYLD_LIBRARY_PATH=/Library/PostgreSQL/11/lib