Изображение Psycopg2 не найдено

Попытка настроить postgres с помощью приложения postgres mac и нажать эту ошибку, которую я не смог решить. Есть предположения?

ImportError: dlopen(/Users/Craig/pyenv/mysite/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: @executable_path/../lib/libssl.1.0.0.dylib Referenced from: /Applications/Postgres.app/Contents/MacOS/lib/libpq.dylib Reason: image not found 

13 Solutions collect form web for “Изображение Psycopg2 не найдено”

 $ sudo ln -s /Library/PostgreSQL/9.2/lib/libssl.1.0.0.dylib /usr/lib $ sudo ln -s /Library/PostgreSQL/9.2/lib/libcrypto.1.0.0.dylib /usr/lib 

Я столкнулся с этой ошибкой во время работы над Django. Я работаю над virtualenv с Django == 1.3, но не на Django == 1.5, где мне нужно выпустить команды выше.

В OS X El Capitan вы не можете делать эти ссылки, не отключая системную защиту, но она работает хорошо, если вы ссылаетесь на / usr / local / lib

Я нашел решение, которое работало для меня, когда речь шла о подобной проблеме на рельсах. Добавьте в свой .bash_profile, .bash_rc или эквивалент следующее:

 export DYLD_FALLBACK_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib:$DYLD_LIBRARY_PATH 

(Предполагая, что вы установили Postgres.app в папку по умолчанию). Затем перезапустите сеанс терминала и повторите попытку.

Экспорт в DYLD_LIBRARY_PATH напрямую может вызвать серьезные проблемы с другими приложениями, зависящими от него, но использование резервного пути устраняет эти проблемы.

См. Также: https://github.com/PostgresApp/PostgresApp/issues/109#issuecomment-18387546

EDIT : Кажется, что установка DYLD_FALLBACK_LIBRARY_PATH вызывает ошибку при попытке запустить psql. Чтобы исправить это, вы можете добавить следующие две строки в ваш .bash_profile:

 alias psql="(. ~/.bash_profile; unset DYLD_FALLBACK_LIBRARY_PATH; psql)"; 

Предполагается, что вы используете bash и ваш .bash_profile находится в вашем домашнем каталоге. Если это не так (или если вы используете .bashrc или другую настройку среды вместо .bash_profile), измените часть команды ~/.bash_profile команды на путь к сценарию настройки среды.

Команда aliased в основном запускает подоболочку, которая не влияет на вашу текущую среду bash. Поэтому, когда он отключает переменную DYLD_FALLBACK_LIBRARY_PATH, она является временной. После выхода из psql переменная окружения будет установлена ​​снова.

Эта проблема стоила мне все утро, чтобы решить. Я нашел дискуссию на http://initd.org/psycopg/articles/2010/11/11/links-about-building-psycopg-mac-os-x/ действительно полезной. Благодаря ответу Jurie, решение моей проблемы (на Mac) выглядит следующим образом:

  1. Установите openssl 1.0.0 с использованием варева:

      brew install openssl 
  2. используя следующую команду:

     export DYLD_LIBRARY_PATH=/usr/local/Cellar/openssl/**1.0.1x**/lib 

    замените часть 1.0.1x на текущую версию. Для меня это 1.0.1h.

Надеюсь это поможет!

EDIT: через один день я обнаружил, что вторая команда должна вводиться каждый раз, когда вам нужно подключиться к базе данных, а не постоянному решению этой проблемы.

В своей среде bash перед загрузкой попробуйте следующее:

 export DYLD_LIBRARY_PATH=/Library/PostgreSQL/xy/lib 

..перемещение «xy» с версией в вашей системе.

.. знайте, что установка этого в вашем профиле bash может помешать другим программам, как отметил KindOfGuy.

Конечно, если вы не запускаете его из приглашения bash, вам придется настраивать свою среду любым способом, которым позволяет pyenv. .. вы даже можете отредактировать сам pyenv и поместить его наверху.

Еще одна альтернатива заключается в том, чтобы поместить это в скрипт python, который выполняется до того, как вы попытаетесь импортировать psycopg2:

 import os os.environ['DYLD_LIBRARY_PATH'] = '/Library/PostgreSQL/xy/lib' 

..again, заменив «xy» на версию вашей системы в / Library / PostgreSQL.

Я столкнулся с этой проблемой, когда обновился с postgres.app с 9.4 до 9.5 на элите.

Другие решения не будут работать (легко) в el capitan из-за системной блокировки в определенных каталогах, то есть решение символической ссылки будет менее доступным / идеальным для большинства.

Это оставляет запасную переменную. Текущий ответ указывает на неправильный каталог. Я предполагаю, что каталог dylibs изменился с 2013 года.

Итак, вот последний резервный каталог, который работает для меня:

 export DYLD_FALLBACK_LIBRARY_PATH=/Applications/Postgres.app/Contents/Versions/latest/lib:$DYLD_LIBRARY_PATH 

Это случилось со мной после обновления Postgresql и после установки psycopg2 в моем virtualenv. Переустановка (перестройка) работала для меня.

 pip uninstall psycopg2 pip install psycopg2 

Большая картина, проблема в том, что требуемая библиотека не найдена. Вы можете изменить, где psycopg2 ищет libssl используя инструменты libssl с открытым исходным кодом Apple, otool и install_name_tool . Эти корабли с OS X и справочные страницы доступны с man <command> .

Перейдите в psycopg2 модулей psycopg2 упомянутый в сообщении об ошибке. Когда-то:

 $ otool -L _psycopg.so ... @executable_path/../lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0) ... 

Здесь перечислены библиотеки _psycopg2.so будут искать. Вы можете изменить, где он будет выглядеть с помощью install_name_tool :

 $ install_name_tool -change @executable_path/../lib/libssl.1.0.0.dylib /usr/local/opt/openssl/lib/libssl.1.0.0.dylib _psycopg.so 

Вам нужно будет настроить, где у вас libssl.1.0.0.dylib , конечно. Примером, который я дал, является путь по умолчанию для Homebrew, но вы можете получить его от Anaconda и / или пакета приложений PostgreSQL. ( brew install openssl если у вас его еще нет.) Вероятно, вам также потребуется повторить для libcrypto.

Выполнение этого изменения может завершиться неудачно в зависимости от того, как был создан _psycopg2.so . Если это произойдет, вы, вероятно, могли бы самостоятельно создать модуль с настраиваемыми путями библиотек, но я не буду в этом разбираться.

Этот подход имеет то преимущество, что он более узкий и, следовательно, менее рискован, чем подход (приведенный в других ответах здесь) о связи libssl 1.0.0 с путями поиска dyld (либо через ln -s либо с DYLD_* переменной окружения DYLD_* ), , (См. Предупреждения против этих подходов в паре обсуждений и некоторый код . Узнайте больше о dyld через man dyld .) Недостаток необходимости повторения для каждой копии psycopg2 . Выберите свое приключение.

Отказ от ответственности: большая часть контента в этом ответе – это знание, которое я объединил в один день. Я не эксперт.

Мне не хватало клиентского пакета postgresql, поэтому я установил их с помощью варева и исправил эту проблему для меня.

 brew update brew doctor brew install postgresql 

У меня была такая же ошибка из-за обновления Postgres.app (с 9.3 до 9.4).

Решение заключалось в том, чтобы удалить колпачки кэша пипов, поскольку они указывали на версию Postgres.app 9.3.

Таким образом, я нашел соответствующие файлы кэша кеша psycopg

 grep -r psycopg ~/.pip/cache 

и удалил каталог, который я нашел с последней командой.

Я нашел это решение, которое сработало для меня

 sudo cp /Applications/Postgres.app/Contents/Versions/9.3/lib/libssl.1.0.0.dylib /usr/lib sudo ln -fs /usr/lib/libssl.1.0.0.dylib /usr/lib/libssl.dylib sudo cp /Applications/Postgres.app/Contents/Versions/9.3/lib/libcrypto.1.0.0.dylib /usr/lib sudo ln -fs /usr/lib/libcrypto.1.0.0.dylib /usr/lib/libcrypto.dylib 

Замените эту часть «/Applications/Postgres.app/Contents/Versions/9.3/» в зависимости от того, где psql установлен на вашем компьютере. Команда, чтобы найти где psql установлен: which psql

ОБНОВЛЕНИЕ ОТ КОММЕНТАРИЙ: В OSX 10.11 (El Capitan) вы больше не можете копировать файлы в / usr / lib. Использовать / usr / local / lib

В Mac OS X 10.11 (El Capitan) /usr/lib читается только для пользователя root. Вы получите ln: /usr/lib/libssl.1.0.0.dylib: Operation not permitted error Вам нужно использовать /usr/local/lib вместо /usr .

 $ sudo ln -s /Library/PostgreSQL/9.2/lib/libssl.1.0.0.dylib /usr/local/lib $ sudo ln -s /Library/PostgreSQL/9.2/lib/libcrypto.1.0.0.dylib /usr/local/lib 

Вы установили psycopg2? Это необходимо для интеграции python с postgresql.

Я столкнулся с аналогичной проблемой с mysql. Запрошенная библиотека не загружает /usr/local/mysql/lib/libmysqlclient_r.16.dylib

Однако в этом каталоге есть более поздняя версия библиотеки: /usr/local/mysql/lib/libmysqlclient.20.dylib

Я работаю в virtualenvwrapper и попытался переустановить все ранее установленные зависимости безрезультатно. Будем очень благодарны любой помощи.

  • psql - как очистить содержимое базы данных, не отбрасывая таблицу
  • Python psycopg2 не вставляется в таблицу postgresql
  • Psycopg2, Postgresql, Python: самый быстрый способ вставки большого объема
  • Воспроизведение Postgres COPY непосредственно в Python?
  • Как запустить psycopg2 на El Capitan без нажатия на ошибку libssl
  • psycopg2: AttributeError: объект 'module' не имеет атрибутов 'extras'
  • Невозможно «COPY FROM» с помощью Postgres & Python
  • копировать данные из csv в postgresql с помощью python
  • Python - лучший язык программирования в мире.