Aid*_*wen 18 python psycopg2 libssl osx-elcapitan
我的Mac上有一个python django dev设置,刚升级到El Capitan.
我在virtualenv中安装了psycopg2但是当我运行我的服务器时出现以下错误 -
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: dlopen(/Users/aidan/Environments/supernova/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: libssl.1.0.0.dylib
Referenced from: /Users/aidan/Environments/supernova/lib/python2.7/site-packages/psycopg2/_psycopg.so
Reason: image not found
Run Code Online (Sandbox Code Playgroud)
我已经尝试重新安装我的virtualenv
pip install -f requirements.txt
Run Code Online (Sandbox Code Playgroud)
我尝试升级psycopg2
pip uninstall psycopg2
pip install psycopg2
Run Code Online (Sandbox Code Playgroud)
但我仍然得到同样的错误.
我也尝试过添加符号链接,/usr/lib但El Capitan的新无根的东西不允许 -
$ sudo ln -s /Library/PostgreSQL/9.2/lib/libssl.1.0.0.dylib
/usr/lib
ln: /usr/lib/libssl.1.0.0.dylib: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
所以我试着/usr/local无济于事.
openssl的系统版本似乎是1.0.2 -
$ openssl version
OpenSSL 1.0.2d 9 Jul 2015
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
Nan*_*ali 22
我尝试了以下方法:
我在我的机器上安装了brew.跑步$ brew doctor给了我一个建议,要做以下事情:
$ sudo chown -R $(whoami):admin /usr/local
完成后,我重新安装psycopg2并执行以下操作:
$ sudo ln -s /Library/PostgreSQL/9.3/lib/libssl.1.0.0.dylib /usr/local/lib/
$ sudo ln -s /Library/PostgreSQL/9.3/lib/libcrypto.1.0.0.dylib /usr/local/lib/
Run Code Online (Sandbox Code Playgroud)
请注意PostgreSQL的版本和路径/usr/local/lib.
这样做让我重新回到了工作设置.
PS:brew建议的步骤可能与此无关,但我提出这个问题是因为您看到了许可问题.您还可以禁用无根模式.
小智 17
原因确实是psycopg2使用了一些PostgreSQL库的相对路径.要修复它,我用过
sudo install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.4/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.4/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.4/lib/libssl.1.0.0.dylib /Library/Python/2.7/site-packages/psycopg2/_psycopg.so
Run Code Online (Sandbox Code Playgroud)
将相对路径转换为绝对路径.当然,每次重新安装psycopg2时都需要这样做.