Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
388 views
in Technique[技术] by (71.8m points)

python - psycopg2 installation error - Library not loaded: libssl.dylib

I try to install psycopg2 in a virtualenv using pip, the compilation looks ok, it says "Successfully installed psycopg2", but when I try to import it in python interpreter (in virtualenv), it indicates error:

  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

The thing is I install it successfully using pip in my other virtual env before, like, several weeks ago, and get it working with the postgresql on my mac. I am wondering if this is a problem of compiler? I saw some warnings like shortens from 64-bit to 32-bit during the installation of psycopg2. My compiler is i686-apple-darwin11-llvm-gcc-4.2, default one on mac os x lion.

I see several posts related to psycopg2 install but most of them are solved by installing in a virtual env. So...could anyone give me a suggestion? Thank you! Really appreciated.

p.s. If you need the compilation log of installing psycopg2 please let me know, I didn't paste it here because it is too long.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Does the error say libssl.dylib version is too old?

On my mac, the error is that libssl.dylib and libcrypto.dylib is too old for pyscopg to use. The openssl package used by mac is 0.98, while pyscopg needs 1.0.0 or later version.

My solution is this:

  1. install openssl from brew

    $ brew install openssl
    
  2. copy libssl.1.0.0.dylib and libcrypto.1.0.0.dylib from /usr/local/Cellar/openssl/1.0.1c to /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 directory, make a softlink libssl.dylib and libcrypto.dylib. You may have to remove the existing links.

    $ 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
    

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...