Подтвердить что ты не робот

Проблемы с использованием psycopg2 на Mac OS (Yosemite)

В настоящее время я устанавливаю psycopg2 для работы в eclipse с помощью python.

Я нахожу много проблем:

  • Первая проблема sudo pip3.4 install psycopg2 не работает и отображается следующее сообщение

Ошибка: исполняемый файл pg_config не найден.

ФИКСИРОВАН С: export PATH=/Library/PostgreSQL/9.4/bin/:"$PATH"

  1. Когда я импортирую 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

  1. Теперь я получаю:

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

Можете ли вы мне помочь?

4b9b3361

Ответ 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