python - Mac OS X Lion Psycopg2 : Symbol not found: _PQbackendPID

标签 python macos psycopg2 osx-lion

我最近升级到 Mac OS X Lion 并试图让 psycopg2 再次与 python 2.6 一起工作。以前站点上的指令强制 Python 运行 32 位以上(参见此处的位置:http://favosdream.blogspot.com/2009/09/make-psycopg2-and-readline-work-in-snow.html)并没有带来任何运气。即使尝试使用 arch -i386 python 将 python 强制为 32 位,仍然给我错误:

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

最佳答案

最近在尝试将 psycopg2 (2.8.2) 导入 python3 (3.5.3) 项目时遇到了这个问题。运行 macOS Sierra (10.12.6),使用 PostgreSQL 9.6 + pgAdmin3。

TLDR:安装 SQL 程序和安装程序创建的动态链接时要小心

据我所知,与 psycopg2 (2.8.2) 兼容所需的 libpq 动态库 ( libpq.5.dylib ) 是 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 , 在这种情况下。

对我有用的解决方案:

搬家 /usr/local/lib$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

关于python - Mac OS X Lion Psycopg2 : Symbol not found: _PQbackendPID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6999105/

相关文章:

python - 使用 Pandas 数据框不相交组进行随机抽样

Python并发.futures使用子进程,运行多个python脚本

swift - NSButtonCell 突出显示仍保留在 Mojave 中的按键上

python - psycopg2.sql 发生了什么?

python - psycopg2 在/tmp 上的权限被拒绝

python - 遍历具有联合概率分布的 4x4 网格世界的概率代理

python - 计算数据帧 A 的每一行在另一个数据帧的许多元素的每一行中出现的次数

c++ - 带有 Macports 的 Mac 上的 OpenSceneGraph 链接器错误

ruby - 通过 rvm 升级 ruby​​gems 的问题

python - 为什么 np.savetxt 不写任何东西?