Macでpython Django devをセットアップしていて、El Capitanにアップグレードしたところです。
Virtualenvにpsycopg2をインストールしましたが、サーバーを実行すると次のエラーが発生します-
Django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: dlopen(/Users/aidan/Environments/supernova/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: libssl.1.0.0.dylib
Referenced from: /Users/aidan/Environments/supernova/lib/python2.7/site-packages/psycopg2/_psycopg.so
Reason: image not found
私はvirtualenvを再インストールしてみました
pip install -f requirements.txt
そして、私はpsycopg2をアップグレードしようとしました
pip uninstall psycopg2
pip install psycopg2
しかし、まだ同じエラーが発生します。
私も試しました シンボリックリンクを追加する に/usr/lib
しかし、El Capitanの新しい根のないものはそれを許可しません-
$ Sudo ln -s /Library/PostgreSQL/9.2/lib/libssl.1.0.0.dylib
/usr/lib
ln: /usr/lib/libssl.1.0.0.dylib: Operation not permitted
だから私は/usr/local
無駄に。
Opensslのシステムバージョンは1.0.2のようです-
$ openssl version
OpenSSL 1.0.2d 9 Jul 2015
どうすれば修正できますか?
私は以下を試しました:
私は自分のマシンにbrewをインストールしました。 _$ brew doctor
_を実行すると、次のことを行うように提案されました。
$ Sudo chown -R $(whoami):admin /usr/local
これが完了したら、_psycopg2
_を再インストールし、次を実行しました。
_$ Sudo ln -s /Library/PostgreSQL/9.3/lib/libssl.1.0.0.dylib /usr/local/lib/
$ Sudo ln -s /Library/PostgreSQL/9.3/lib/libcrypto.1.0.0.dylib /usr/local/lib/
_
PostgreSQLのバージョンとパス_/usr/local/lib
_に注意してください。
これを行うと、再び動作する設定に戻りました。
追伸:醸造所が提案した手順はここでは関係ないかもしれませんが、許可の問題が発生しているため、これを採用しました。 ルートレスモードを無効にすることもできます。
その理由は確かに、いくつかのPostgreSQLライブラリへの相対パスを使用するpsycopg2です。それを修正するために私は使用しました
Sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.4/lib/libpq.5.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
Sudo install_name_tool -change libcrypto.1.0.0.dylib /Library/PostgreSQL/9.4/lib/libcrypto.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
Sudo install_name_tool -change libssl.1.0.0.dylib /Library/PostgreSQL/9.4/lib/libssl.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
相対パスを絶対パスに変換します。もちろん、psycopg2を再インストールするたびにこれを行う必要があります。
アナコンダを使用しますか?もしそうなら、私にとってうまくいった非常に単純な解決策は、単にcondaを使用してインストールすることでした。
具体的には、コマンドラインで次のように入力します。
conda psycopg2をインストール
@ArtHargソリューションに基づいて、python 3.4、PostgreSQL 9.5およびOS X el capitanでこれを使用しました:
Sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.5/lib/libpq.5.dylib /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
Sudo install_name_tool -change libcrypto.1.0.0.dylib /Library/PostgreSQL/9.5/lib/libcrypto.1.0.0.dylib /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
Sudo install_name_tool -change libssl.1.0.0.dylib /Library/PostgreSQL/9.5/lib/libssl.1.0.0.dylib /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
El Capitan
10.11.5とpython
3.5.1で、インポートしようとすると同じエラーが発生しましたpsycopg2
、シンプルなコンソールまたはPyCharm内。私はルートに到達することでこれをなんとか修正しました:
Sudo su -
次に、2つのライブラリをシンボリックにリンクします。
ln -s /Library/PostgreSQL/9.5/lib/libssl.1.0.0.dylib /usr/local/lib
ln -s /Library/PostgreSQL/9.5/lib/libcrypto.1.0.0.dylib /usr/local/lib
その後、connection error
終了したメッセージ:
psycopg2.OperationalError: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
私のPostgreSQLインストールは/ tmpのソケットをリッスンしていたため、接続を許可するには別のシンボリックリンクが必要でした:
ln -s /tmp/.s.PGSQL.5432 /var/pgsql_socket/
これまで私が設定していたので、これも私にとって苦痛です
export DYLD_FALLBACK_LIBRARY_PATH=/Library/Postgresql/9.5/lib
私の.bash_profileで、すべてがうまくいきました。しかし、その環境変数は、新しいシェルに渡すことができない環境変数の1つです。 pythonログインシェルから実行してpsycopg2を正常にインポートできますが、テストスクリプトが停止します。
ここで、$ SIP_WORKAROUND_LIBRARY_PATHを同じ値に設定します。OSXはそのままにします。次に、次のようにする必要があります。
export DYLD_FALLBACK_LIBRARY_PATH=$SIP_WORKAROUND_LIBRARY_PATH
私のテストスクリプトでは、値をこっそりと調べます。それは理想からは程遠いですが、誰かを助けることを願っています。