Yul*_*ong 31 python psycopg2 virtualenv
我尝试psycopg2
使用virtualenv 安装pip
,编译看起来没问题,它说"成功安装了psycopg2",但是当我尝试在python解释器中导入它时(在virtualenv中),它表示错误:
File "<stdin>", line 1, in <module>
File "/Users/me/sites/env/trackmap/lib/python2.7/site-packages/psycopg2/__init__.py", line 67, in <module>
from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: dlopen(/Users/me/sites/env/trackmap/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: libssl.dylib
Referenced from: /Users/me/sites/env/trackmap/lib/python2.7/site-packages/psycopg2/_psycopg.so
Reason: Incompatible library version: _psycopg.so requires version 1.0.0 or later, but libssl.0.9.8.dylib provides version 0.9.8
Run Code Online (Sandbox Code Playgroud)
问题是我pip
在几周之前使用我的其他虚拟环境成功安装它,就像几个星期前一样,让它postgresql
在我的Mac上工作.我想知道这是否是编译器的问题?我shortens from 64-bit to 32-bit
在安装psycopg2时看到了一些警告.我的编译器是i686-apple-darwin11-llvm-gcc-4.2
mac os x lion上的默认编译器.
我看到几个与psycopg2
安装相关的帖子,但大多数都是通过安装在虚拟环境中解决的.那么......有人能给我一个建议吗?谢谢!非常感谢.
ps如果你需要安装psycopg2的编译日志,请告诉我,我没有在这里粘贴,因为它太长了.
min*_*nel 91
错误是否说libssl.dylib
版本太旧了?
在我的Mac上,错误是这个,libssl.dylib
并且libcrypto.dylib
太旧了,pyscopg无法使用.openssl
mac使用的包是0.98,而pyscopg需要1.0.0或更高版本.
我的解决方案是:
从brew安装openssl
$ brew install openssl
Run Code Online (Sandbox Code Playgroud)复制libssl.1.0.0.dylib
并libcrypto.1.0.0.dylib
从/usr/local/Cellar/openssl/1.0.1c
到/usr/lib/
$ cd /usr/local/Cellar/openssl/1.0.1c/lib
$ sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/lib/
Run Code Online (Sandbox Code Playgroud)在/usr/lib
目录中,制作一个软链接libssl.dylib
和libcrypto.dylib
.您可能必须删除现有链接.
$ sudo rm libssl.dylib libcrypto.dylib
$ sudo ln -s libssl.1.0.0.dylib libssl.dylib
$ sudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib
Run Code Online (Sandbox Code Playgroud)jia*_*amo 34
我认为在 Mac 中我们需要:
export LDFLAGS="-L/usr/local/opt/openssl/lib"
Run Code Online (Sandbox Code Playgroud)
ans*_*onw 22
我有类似的问题.我曾使用Anaconda安装python和一些软件包,然后使用pip来安装psycopg2.我能够通过卸载psycopg2并使用conda包管理器而不是pip重新安装它来修复错误.
pip uninstall psycopg2
conda install psycopg2
Run Code Online (Sandbox Code Playgroud)
Rob*_*ujo 20
在OSX 10.11+(El Capitan或更高版本)解决方案上更换符号链接(参见上述 - /sf/answers/833830931/)sudo rm libssl.dylib libcrypto.dylib
报告Operation not permitted
.对我有用的解决方案是:
brew install openssl
Run Code Online (Sandbox Code Playgroud)
找到openssl brew lib所在的位置,从目录开始搜索/usr/local/Cellar/openssl
.在我的情况下它是在/usr/local/Cellar/openssl/1.0.2d_1/lib
最后设置DYLD_LIBRARY_PATH,即将这样的行添加到.bash_profile中:
# replace location of lib files with folder name you found in previous step
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/Cellar/openssl/1.0.2d_1/lib
Run Code Online (Sandbox Code Playgroud)
重启shell,或者只source ~/.bash_profile
测试它是否有效:
$ python -c"import psycopg2 ; print('psycopg2 is now ok')"
Run Code Online (Sandbox Code Playgroud)
goz*_*lli 13
谢谢@khrf的回答.
如果您使用的是postgres系统安装程序(而不是Postgres.app),请使用:
export DYLD_LIBRARY_PATH=/Library/PostgreSQL/9.3/lib
Run Code Online (Sandbox Code Playgroud)
~/.bash_profile
如果你想避免每次都输入它,可以放在你的.
归档时间: |
|
查看次数: |
25871 次 |
最近记录: |