Import psycopg2 Library not loaded: libssl.1.0.0.dylib
Solution 1:
Instead of playing with symlinks in system library dirs, set the $DYLD_FALLBACK_LIBRARY_PATH
to include the anaconda libraries. eg:
export DYLD_FALLBACK_LIBRARY_PATH=$HOME/anaconda/lib/:$DYLD_FALLBACK_LIBRARY_PATH
Solution 2:
After Homebrew wouldn't allow me to force link openssl
the following worked fine:
pip install --global-option=build_ext \
--global-option="-I/usr/local/opt/openssl/include" \
--global-option="-L/usr/local/opt/openssl/lib" psycopg2
(this installation succeeded in a virtualenv
on macOS)
Solution 3:
EDIT: potentially dangerous, read comments first!
See a much safer answer below: https://stackoverflow.com/a/30726895/308315
I ran into this exact issue about an hour after you posted it and just figured it out. I am using Mac OS X Yosemite, Python 2.7, and the Postgresql app.
There seems to be a non-working symlink set by default (or I introduced it while troubleshooting), to fix it first remove the incorrect links:
$ sudo rm /usr/lib/libssl.1.0.0.dylib
$ sudo rm /usr/lib/libcrypto.1.0.0.dylib
Then re-link them with (replace YOURUSERNAME with your Mac user name. I found it helpful to use tab to complete each step, to confirm the directory):
$ sudo ln -s /Users/YOURUSERNAME/anaconda/lib/libssl.1.0.0.dylib /usr/lib
$ sudo ln -s /Users/YOURUSERNAME/anaconda/lib/libcrypto.1.0.0.dylib /usr/lib
I believe the other solutions didn't work for you because your version is in anaconda.
Solution 4:
After bashing my head against the wall for a couple hours, these two solutions are guaranteed to work:
Option 1. This solves our problem without messing around with environment variables. Run this in your shell:
brew install --upgrade openssl
brew unlink openssl && brew link openssl --force
Boom! This upgrades the symbolic links in /usr/local
for libssl
and libcrypto
. Now import psycopg2
works like a charm.
Option 2. If for some reason you would like to maintain the current symbolic links in usr/local
, run this command in your shell:
export DYLD_FALLBACK_LIBRARY_PATH=$HOME/anaconda/lib/:$DYLD_FALLBACK_LIBRARY_PATH
Just make sure to replace $HOME/anaconda/lib
above with the actual lib path. In my case, this was $HOME/miniconda2/envs/ali/lib
.
This will only work for the shell/bash session you're currently in. To make the change persistent, add the export
statement to your ~/.bash_profile
or ~/.bashrc
file.
Thoughts: IMO #1 is the proper way to deal with this problem, but I left #2 in case some people prefer working with environment variables rather than fixing symbolic links (if, for example, they have software with a dependency on the older openssl file versions).
Solution 5:
conda install psycopg works for me. It updates the following packages The following packages will be UPDATED:
conda: 3.19.1-py27_0 --> 4.0.5-py27_0
openssl: 1.0.2f-0 --> 1.0.2g-0
pip: 8.0.2-py27_0 --> 8.1.0-py27_0
setuptools: 19.6.2-py27_0 --> 20.2.2-py27_0
wheel: 0.26.0-py27_1 --> 0.29.0-py27_0