PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

python pip install psycopg2 Installationsfehler

Die akzeptierte Antwort hier ist richtig (außer ich denke, es muss ln -fs sein, tatsächlich denke ich, dass es sogar riskieren könnte, Ihr Betriebssystem zu destabilisieren, wenn nicht (?)). Nachdem ich darauf gestoßen bin und mich damit befasst habe, möchte ich nur die vollständige Lösung für dieses Problem und das andere lib-Problem (libcrypto.1.0.0.dylib) sammeln, auf das Sie für Postgres 9.* auf Mountain Lion und Snow Leopard stoßen werden, und vielleicht andere Systeme. Dies hat mich auch daran gehindert, psql auszuführen, das sich über dieselben zwei Bibliotheken beschwert hat.

Im Wesentlichen werden zwei spätere Bibliotheken in /usr/lib benötigt , libssl und libcrypto. Sie finden die benötigten Versionen dieser Bibliotheken im Postgres-Bibliotheksverzeichnis.

  • Wenn Sie OSX verwenden und die Enterprise DB-Version von Postgres installiert haben, befindet sich diese in /Library/PostgreSQL/9.2/lib .
  • Suchen Sie für andere Installationstypen von Postgres nach dem lib-Verzeichnis innerhalb des Postgress-Installationsverzeichnisses, z. B. für Postgress.app, suchen Sie das lib-Verzeichnis in /Applications/Postgres.app/Contents/MacOS/lib ,
  • für brew irgendwo in /usr/local/Cellar ,
  • auf *nix, wo auch immer Ihre Installation ist. Aber sehen Sie zuerst auf *nix, ob Ihre Distribution neuere Versionen hat, einfach über den Paketmanager.

Kopieren Sie zuerst die neueste dieser beiden Bibliotheken aus dem Postgres-Bibliotheksverzeichnis nach /usr/lib :

sudo cp /Library/PostgreSQL/9.2/lib/libssl.1.0.0.dylib /usr/lib
sudo cp /Library/PostgreSQL/9.2/lib/libcrypto.1.0.0.dylib /usr/lib

Aktualisieren (oder erstellen) Sie dann die /usr/lib-Symlinks für diese Bibliotheken. In beiden Fällen lautet der Befehl ln -fs :

sudo ln -fs /usr/lib/libssl.1.0.0.dylib /usr/lib/libssl.dylib
sudo ln -fs /usr/lib/libcrypto.1.0.0.dylib /usr/lib/libcrypto.dylib

Sollte behoben werden. Ich bin mir ziemlich sicher, dass ln -fs besser ist, als den Symlink zu löschen und neu zu erstellen, sodass die Wahrscheinlichkeit geringer ist, dass libssl von etwas nicht gefunden wird, das es für die Zeit benötigt, in der es nicht vorhanden ist (es macht dasselbe; es löscht zuerst den Symlink, falls vorhanden bereits da, nur schneller als Sie es eingeben können). Seien Sie immer vorsichtig, wenn Sie auf /usr/lib herumspielen.