Psycopg2 Installationsfehler – Bibliothek nicht geladen: libssl.dylib

Ich versuche, psycopg2 in einem virtualenv mit pip zu installieren, die Kompilation sieht ok aus, es heißt "Erfolgreich installierte psycopg2", aber wenn ich versuche, es in Python-Interpreter (in virtualenv) zu importieren, zeigt es Fehler an:

  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 

Die Sache ist, ich installiere es erfolgreich mit pip in meinem anderen virtuellen env vor, wie, vor einigen Wochen, und es mit dem postgresql auf meinem Mac zu arbeiten. Ich frage mich, ob dies ein Problem des Compilers ist? Ich habe einige Warnungen gesehen, shortens from 64-bit to 32-bit während der Installation von psycopg2 shortens from 64-bit to 32-bit verkürzen. Mein Compiler ist i686-apple-darwin11-llvm-gcc-4.2 , Standard eins auf mac os x lion.

Ich sehe mehrere Beiträge im Zusammenhang mit psycopg2 installieren, aber die meisten von ihnen sind gelöst durch die Installation in einem virtuellen env. Also … könnte mir jemand einen Vorschlag geben? Vielen Dank! Sehr geschätzt.

Ps Wenn Sie das Kompilierungsprotokoll der Installation von psycopg2 benötigen, lassen Sie es mich bitte wissen, ich habe es hier nicht eingefügt, weil es zu lang ist.

5 Solutions collect form web for “Psycopg2 Installationsfehler – Bibliothek nicht geladen: libssl.dylib”

Ist der Fehler libssl.dylib Version zu alt?

Auf meinem Mac ist der Fehler, dass libssl.dylib und libcrypto.dylib zu alt für pyscopg zu verwenden ist. Das von mac verwendete openssl-Paket ist 0,98, während pyscopg 1.0.0 oder höher Version benötigt.

Meine Lösung ist das:

  1. Install openssl aus brauen

     $ brew install openssl 
  2. libssl.1.0.0.dylib und libcrypto.1.0.0.dylib aus /usr/local/Cellar/openssl/1.0.1c zu /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. In /usr/lib Verzeichnis, mach einen Softlink libssl.dylib und libcrypto.dylib . Möglicherweise müssen Sie die vorhandenen Links entfernen.

     $ 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 

Auf OSX 10.11+ (El Capitan oder höher) Lösung mit dem Ersetzen von Symlinks (siehe oben – https://stackoverflow.com/a/11911870/565525 ) sudo rm libssl.dylib libcrypto.dylib berichtet Operation not permitted . Lösung, die für mich arbeitete war:

 brew install openssl 

Finden Sie wo openssl brauen libs befinden, starten Sie aus dem Verzeichnis /usr/local/Cellar/openssl . In meinem Fall ist es in /usr/local/Cellar/openssl/1.0.2d_1/lib

Schließlich setze DYLD_LIBRARY_PATH ein, dh füge eine Zeile wie diese in .bash_profile hinzu:

 # 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 

Neustart Shell, oder einfach nur source ~/.bash_profile und testen, ob es funktioniert:

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

Ich hatte ein ähnliches Problem. Ich hatte Anaconda benutzt, um Python und eine Reihe von Paketen zu installieren und dann später Pip verwenden, um psycopg2 zu installieren. Ich konnte den Fehler beheben, indem du psycopg2 deinstallierte und ihn mit dem conda Paketmanager anstelle von pip neu installierte.

 pip uninstall psycopg2 conda install psycopg2 

Danke für deine Antwort.

Wenn Sie den Postgres Systeminstallateur (anstelle von Postgres.app) verwenden, verwenden Sie:

 export DYLD_LIBRARY_PATH=/Library/PostgreSQL/9.3/lib 

Die in deinem ~/.bash_profile wenn du es vermeiden willst, es jedes Mal zu schreiben.

Wenn Sie PostgresApp verwenden, setzen Sie die Umgebungsvariable DYLD_LIBRARY_PATH genau ein, zB:

 DYLD_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib/ ../venv/bin/python manage.py syncdb 
  • PyLint "Kann nicht importieren" Fehler - wie man PYTHONPATH setzt?
  • Python-Pakete nicht in virtualenv mit Pip installieren
  • Pip installiert das Paket zweimal
  • Wie füge ich einen Pfad zu PYTHONPATH in virtualenv hinzu
  • Irgendeine Idee, wie man python PIP auf einem Windows-Box aktualisiert?
  • Ändern des prompten Stils einer virtualenv-Instanz mit zsh
  • Virtualenv / Pip-Installationsprotokoll?
  • Virtualenv mit Eclipse (Galileo)
  • Probleme mit Nase in einem virtualenv
  • Pip installieren Matplotlib Fehler mit virtualenv
  • Konnte keine Version finden, die die Anforderung pytz erfüllt
  • Python ist die beste Programmiersprache der Welt.