Problems using psycopg2 on Mac OS (Yosemite)
Question:
Currently I am installing psycopg2 for work within eclipse with python.
I am finding a lot of problems:
- The first problem
sudo pip3.4 install psycopg2
is not working and it is showing the following message
Error: pg_config executable not found.
FIXED WITH:export PATH=/Library/PostgreSQL/9.4/bin/:"$PATH”
- When I import psycopg2 in my project i obtein:
ImportError:
dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
Library libssl.1.0.0.dylib
Library libcrypto.1.0.0.dylib
FIXED WITH:
sudo ln -s /Library/PostgreSQL/9.4/lib/libssl.1.0.0.dylib /usr/lib
sudo ln -s /Library/PostgreSQL/9.4/lib/libcrypto.1.0.0.dylib /usr/lib
- Now I am obtaining:
ImportError:
dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so,
2): Symbol not found: _lo_lseek64 Referenced from:
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
Expected in: /usr/lib/libpq.5.dylib in
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
Can you help me?
Answers:
You need to replace the /usr/lib/libpq.5.dylib library because its version is too old.
Here’s my solution to this problem:
$ sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old
$ sudo ln -s /Library/PostgreSQL/9.4/lib/libpq.5.dylib /usr/lib
I am using yosemite, postgres.app & django. this got psycopg2 to load properly for me but the one difference was that my libpq.5.dylib
file is in /Applications/Postgres.app/Contents/Versions/9.4/lib
.
thus my second line was sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib
If you are using PostgresApp, you need to run the following two commands:
sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old
sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib
well, I’d like to give my solution, the problem is related with the version of c. So, I just typed:
CFLAGS='-std=c99' pip install psycopg2==2.6.1
For those of you on El Capitan who can’t use @KungFuLucky7’s answer – I used the following to fix the issue (Adjust paths to match yours where required).
sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.5/lib/libpq.5.dylib /usr/local/lib/python2.7/site-packages/psycopg2/_psycopg.so
Here’s a fix that worked for me on El Capitan that doesn’t require restarting to work around the OS X El Capitan System Integrity Protection (SIP):
brew unlink postgresql && brew link postgresql
brew link --overwrite postgresql
In El Capitan, I used the same solution as @Forbze but 2 more commands as follows.
sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.3/lib/libpq.5.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
sudo install_name_tool -change libssl.1.0.0.dylib /Library/PostgreSQL/9.3/lib/libssl.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
sudo install_name_tool -change libcrypto.1.0.0.dylib /Library/PostgreSQL/9.3/lib/libcrypto.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
It works perfectly!
I was able to fix this on my Mac (running Catalina, 10.15.3) by using psycopg2-binary rather than psycopg2.
pip3 uninstall psycopg2
pip3 install psycopg2-binary
Currently I am installing psycopg2 for work within eclipse with python.
I am finding a lot of problems:
- The first problem
sudo pip3.4 install psycopg2
is not working and it is showing the following message
Error: pg_config executable not found.
FIXED WITH:export PATH=/Library/PostgreSQL/9.4/bin/:"$PATH”
- When I import psycopg2 in my project i obtein:
ImportError:
dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
Library libssl.1.0.0.dylib
Library libcrypto.1.0.0.dylib
FIXED WITH:
sudo ln -s /Library/PostgreSQL/9.4/lib/libssl.1.0.0.dylib /usr/lib
sudo ln -s /Library/PostgreSQL/9.4/lib/libcrypto.1.0.0.dylib /usr/lib
- Now I am obtaining:
ImportError:
dlopen(/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so,
2): Symbol not found: _lo_lseek64 Referenced from:
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
Expected in: /usr/lib/libpq.5.dylib in
/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
Can you help me?
You need to replace the /usr/lib/libpq.5.dylib library because its version is too old.
Here’s my solution to this problem:
$ sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old
$ sudo ln -s /Library/PostgreSQL/9.4/lib/libpq.5.dylib /usr/lib
I am using yosemite, postgres.app & django. this got psycopg2 to load properly for me but the one difference was that my libpq.5.dylib
file is in /Applications/Postgres.app/Contents/Versions/9.4/lib
.
thus my second line was sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib
If you are using PostgresApp, you need to run the following two commands:
sudo mv /usr/lib/libpq.5.dylib /usr/lib/libpq.5.dylib.old
sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib
well, I’d like to give my solution, the problem is related with the version of c. So, I just typed:
CFLAGS='-std=c99' pip install psycopg2==2.6.1
For those of you on El Capitan who can’t use @KungFuLucky7’s answer – I used the following to fix the issue (Adjust paths to match yours where required).
sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.5/lib/libpq.5.dylib /usr/local/lib/python2.7/site-packages/psycopg2/_psycopg.so
Here’s a fix that worked for me on El Capitan that doesn’t require restarting to work around the OS X El Capitan System Integrity Protection (SIP):
brew unlink postgresql && brew link postgresql
brew link --overwrite postgresql
In El Capitan, I used the same solution as @Forbze but 2 more commands as follows.
sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.3/lib/libpq.5.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
sudo install_name_tool -change libssl.1.0.0.dylib /Library/PostgreSQL/9.3/lib/libssl.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
sudo install_name_tool -change libcrypto.1.0.0.dylib /Library/PostgreSQL/9.3/lib/libcrypto.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
It works perfectly!
I was able to fix this on my Mac (running Catalina, 10.15.3) by using psycopg2-binary rather than psycopg2.
pip3 uninstall psycopg2
pip3 install psycopg2-binary