Проблемы с использованием psycopg2 на Mac OS (Yosemite)
В настоящее время я устанавливаю psycopg2 для работы в eclipse с помощью python.
Я нахожу много проблем:
- Первая проблема
sudo pip3.4 install psycopg2
не работает и отображается следующее сообщение
Ошибка: исполняемый файл pg_config не найден.
ФИКСИРОВАН С: export PATH=/Library/PostgreSQL/9.4/bin/:"$PATH"
- Когда я импортирую psycopg2 в свой проект я obtein:
ImportError: dlopen (/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so Библиотека libssl.1.0.0.dylib Библиотека libcrypto.1.0.0.dylib
ИСПРАВЛЕНО:
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
- Теперь я получаю:
ImportError: dlopen (/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so, 2): Символ не найден: _lo_lseek64 Референтный номер: /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so Ожидается в:/usr/lib/libpq.5.dylib в /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/psycopg2/_psycopg.so
Можете ли вы мне помочь?
Ответы
Ответ 1
Вам нужно заменить библиотеку /usr/lib/libpq.5.dylib, потому что ее версия слишком старая.
Здесь мое решение этой проблемы:
$ 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
Ответ 2
Если вы используете PostgresApp, вам нужно выполнить следующие две команды:
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
Ответ 3
Я использую yosemite, postgres.app и django. это заставило psycopg2 правильно загружаться для меня, но единственное различие заключалось в том, что мой файл libpq.5.dylib
находится в /Applications/Postgres.app/Contents/Versions/9.4/lib
.
таким образом, моя вторая строка была sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib
Ответ 4
Здесь исправление, которое работало для меня на El Capitan, которое не требует перезапуска для работы с OS X El Capitan System Integrity Protection (SIP):
brew unlink postgresql && brew link postgresql
brew link --overwrite postgresql
H/T Фархан Ахмад
Ответ 5
В El Capitan я использовал то же решение, что и @Forbze, но еще 2 команды следующим образом.
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
Он отлично работает!
Ответ 6
ну, я бы хотел дать свое решение, проблема связана с версией c. Итак, я просто набрал:
CFLAGS='-std=c99' pip install psycopg2==2.6.1
Ответ 7
Для тех из вас, кто не может использовать ответ @KungFuLucky7, я использовал следующее, чтобы исправить проблему (отрегулируйте пути, чтобы они соответствовали вашим требованиям, если это необходимо).
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