python - 无法加载 PostgreSQL 的 Python 绑定(bind) - psycopg2

标签 python macos postgresql trac

从 Lion Mountain 升级到 Mavericks (10.9.4) 后,Trac 安装停止工作。

首先,我尝试通过升级 Trac 安装来解决该问题,但收到以下错误消息:

$ trac-admin /Users/myuser/Documents/2014/trac upgrade
Error: Cannot load Python bindings for PostgreSQL

然后,通过直接在 Python 控制台上进行测试,我可以说这是一致的,因为我收到了相同的错误:

 $ python
 Python 2.7.5 (default, Mar  9 2014, 22:15:05) 
 [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
 Type "help", "copyright", "credits" or "license" for more information.
 >>> import psycopg2
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "/Library/Python/2.7/site-packages/psycopg2/__init__.py", line 50, in <module>
     from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
 ImportError: dlopen(/Library/Python/2.7/site-packages/psycopg2/_psycopg.so, 2)
 Library not loaded: libssl.1.0.0.dylib
   Referenced from: /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
   Reason: image not found
 >>> 

我已经尝试过多种方法:安装和卸载 psycopg2(使用 pip 和 easy_install),甚至从源代码构建 psycopg2

然后,四处寻找解决方案,我在这些相关问题 Q1 中找到了一些建议, Q2Q3 ,但尚未成功。

otool 给我以下输出:

$ otool -L /Library/Python/2.7/site-packages/psycopg2/_psycopg.so

/Library/Python/2.7/site-packages/psycopg2/_psycopg.so:
     libpq.5.dylib (compatibility version 5.0.0, current version 5.5.0)
     libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
     libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
     /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

然后,我尝试设置 DYLD_FALLBACK_LIBRARY_PATH 环境变量,如下所示:

 $ echo $DYLD_FALLBACK_LIBRARY_PATH
 /Users/myuser/lib:/usr/local/lib:/lib:/usr/lib

包括,重新启动控制台并重新启动机器,我已经没有解决方案了,知道如何解决吗?

最佳答案

最后,我能够运行 Trac 来访问存储在 PostgreSQL 9.2 中的旧票证数据库

...经过几年的尝试,以及从 Mavericks 到 Yosemite 再到 El Capitan 的几次升级,这就是解决方案:

第 1 步:更改/usr/local 文件夹的所有者

sudo chown -R $(whoami):admin /usr/local

第 2 步:更新路径

PG_HOME=/Library/PostgreSQL/9.2
PATH=$PATH:$PG_HOME/bin

第 3 步:重新安装 psycopg2

pip uninstall psycopg2
pip install psycopg2

第 4 步:更新 psycopg2 使用的相对路径

sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.2/lib/libpq.5.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
sudo install_name_tool -change libcrypto.1.0.0.dylib /Library/PostgreSQL/9.2/lib/libcrypto.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
sudo install_name_tool -change libssl.1.0.0.dylib /Library/PostgreSQL/9.2/lib/libssl.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so

关于python - 无法加载 PostgreSQL 的 Python 绑定(bind) - psycopg2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26088564/

相关文章:

python - 当子进程输出满足条件时杀死子进程?

python - Tensorflow concat tf.data.Dataset 批处理

python - 使用位掩码查找数据间隙

c - 在 OS X 上生成 MD5 密码

mysql - 在 Mac OS X 上的终端中运行 mysql 时如何通过单击定位光标

sql - 如何在并发访问时标记表中的某些行

java - 无法使用 Heroku postgres 将数据添加到 Spring Boot 上的数据库

java - 0xaa 和 0x55 在做什么?

macos - OS X Chrome的调试符号

sql - 在 postgresql 选择中,将时间戳列添加到 additional_days 列