Mac OS X Lion Psycopg2: символ не найден: _PQbackendPID - PullRequest
0 голосов
/ 09 августа 2011

Я недавно обновился до Mac OS X Lion и пытаюсь заставить psycopg2 снова работать с python 2.6.Инструкции на предыдущих сайтах, чтобы заставить Python работать на 32 бита больше (такие места, как здесь: http://favosdream.blogspot.com/2009/09/make-psycopg2-and-readline-work-in-snow.html), не приносят никакой удачи.Даже попытка заставить Python 32-битным с помощью Arch -i386 Python по-прежнему дает мне ошибку:

symbol not found: _PQbackendPID
  Referenced from: /Library/Python/2.6/site-packages/psycopg2/_psycopg.so
  Expected in: flat namespace

Ответы [ 3 ]

2 голосов
/ 15 мая 2012

У меня тоже была эта проблема на Snow Leopard / 10.6.8, и я потерял полдня в середине довольно интенсивного контракта.Не смешно.В итоге я исправил это: а) полностью удалил все версии postgres и перезагрузился, б) полностью удалил все мои установки psycopg2 (используй locate и будь безжалостным), в) обновил мой системный python до 2.7, d) переустановил virtualenv и pip, чтобы они указывалив правильной версии Python, а затем e) следуя инструкциям на этой странице, начиная с установки postgres 9.1 из установщика dmg:

http://hardlifeofapo.com/psycopg2-and-postgresql-9-1-on-snow-leopard/

В конечном итоге это было так просто:

virtualenv your_virtual_env_name
. your_virtual_env_name/bin/activate
export ARCHFLAGS="-arch i386 -arch x86_64"
export PATH=$PATH:/Library/PostgreSQL/9.1/bin
pip install psycopg2

Удачи!

1 голос
/ 12 июня 2019

Недавно возникла эта проблема при попытке импортировать psycopg2 (2.8.2) в проект python3 (3.5.3).Запуск macOS Sierra (10.12.6) с использованием PostgreSQL 9.6 + pgAdmin3.

TLDR: будьте осторожны при установке программ SQL и динамических ссылок, создаваемых установщиками

Из того, что я могу сказать, необходимая динамическая библиотека libpq (libpq.5.dylib), совместимая с psycopg2 (2.8.2), - это libpq 5.9+ (libpq.5.9.dylib)

Когда postgres (или другие postgres)программы), они могут создавать динамические ссылки в /usr/lib на вновь установленные файлы .dylib, которые могут необязательно быть теми, которые вам нужны.

Например, /usr/lib/libpq.5.dylib может указывать на ./Applications/pgAdmin3.app/Contents/Frameworks/libpq.5.dylib, то есть версию 5.6;старая версия динамической библиотеки libpq может не включать некоторые функции, такие как _PQsslAttribute, в этом случае.

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

Move *На 1027 * вверх в $PATH (поскольку usr/lib может быть доступен для записи только пользователю root), затем создайте динамическую ссылку в /usr/local/lib, чтобы указывать на /Library/PostgreSQL/9.6/lib/libpq.5.9.dylib следующим образом:

cd /usr/local/lib
ln -s /Library/PostgreSQL/9.6/lib/libpq.5.9.dylib ./libpq.5.dylib
1 голос
/ 09 августа 2011

Вы пробовали arch -i386 python2.6, если используете Python 2.6 от Apple в /usr/bin/python2.6?Но если вы по-прежнему используете 32-разрядную версию psycopg2 и клиентские библиотеки PostgreSQL, возможно, пришло время установить более новые 64-разрядные или 64-разрядные / 32-разрядные универсальные версии.MacPorts может помочь с этим.

...