导入psycopg2库未加载:libssl.1.0.0.dylib

Gid*_*eon 42 python database postgresql python-2.7 postgresql-9.3

当我尝试运行命令时:

import psycopg2
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ImportError: dlopen(/Users/gwulfs/anaconda/lib/python2.7/site-packages/psycopg2/_psycopg.so, 2): Library not loaded: libssl.1.0.0.dylib
  Referenced from: /Users/gwulfs/anaconda/lib/python2.7/site-packages/psycopg2/_psycopg.so
  Reason: image not found
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试brew install openssl并引用(没有运气):

psycopg2安装错误 - 未加载库:libssl.dylib

http://joshuakehn.com/2013/10/13/Postgresapp-and-psycopg2-on-OS-X.html

未找到Psycopg2图像

小智 71

而不是在系统库目录中使用符号链接,设置$DYLD_FALLBACK_LIBRARY_PATH包括anaconda库.例如:

export DYLD_FALLBACK_LIBRARY_PATH=$HOME/anaconda/lib/:$DYLD_FALLBACK_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)


Sco*_*uhl 30

编辑:有潜在危险,请先阅读评论!

请参阅下面更安全的答案:https://stackoverflow.com/a/30726895/308315


我发布它后大约一个小时就遇到了这个问题并且刚想出来了.我正在使用Mac OS X Yosemite,Python 2.7和Postgresql应用程序.

似乎默认情况下设置了一个不工作的符号链接(或者我在故障排除时引入了它),要修复它首先删除不正确的链接:

$ sudo rm /usr/lib/libssl.1.0.0.dylib
$ sudo rm /usr/lib/libcrypto.1.0.0.dylib
Run Code Online (Sandbox Code Playgroud)

然后重新链接它们(用您的Mac用户名替换YOURUSERNAME.我发现使用tab完成每个步骤,确认目录是有帮助的):

$ sudo ln -s /Users/YOURUSERNAME/anaconda/lib/libssl.1.0.0.dylib /usr/lib
$ sudo ln -s /Users/YOURUSERNAME/anaconda/lib/libcrypto.1.0.0.dylib /usr/lib
Run Code Online (Sandbox Code Playgroud)

我相信其他解决方案对您不起作用,因为您的版本是在anaconda中.

  • 不要这样做.这样做可以很容易地破坏你的系统. (7认同)
  • 不要,只是mv.您可能会发现在下一步中您实际上没有要链接到的文件. (3认同)
  • XL的答案对我有用.我也会对这个答案持谨慎态度. (2认同)

ali*_*dry 22

将我的头靠在墙上几个小时后,这两种解决方案保证可以正常工作:

选项1.这解决了我们的问题,而没有搞乱环境变量.在shell中运行:

brew install --upgrade openssl
brew unlink openssl && brew link openssl --force
Run Code Online (Sandbox Code Playgroud)

繁荣!这会升级/usr/localfor libssl和中的符号链接libcrypto.现在import psycopg2就像一个魅力.

选项2.如果由于某种原因您想要维护当前的符号链接usr/local,请在shell中运行以下命令:

export DYLD_FALLBACK_LIBRARY_PATH=$HOME/anaconda/lib/:$DYLD_FALLBACK_LIBRARY_PATH

只需确保将$HOME/anaconda/lib以上替换为实际的lib路径.就我而言,这是$HOME/miniconda2/envs/ali/lib.

这只会为你目前所在的壳/ bash命令工作.要使更改持久,添加export语句您~/.bash_profile~/.bashrc文件.

思考: IMO#1是处理这个问题的正确方法,但我留下#2以防有些人喜欢使用环境变量而不是修复符号链接(例如,如果他们的软件依赖于旧的openssl文件版本).


NST*_*STJ 17

在Homebrew不允许我强制链接后openssl,以下工作正常:

pip install --global-option=build_ext \
            --global-option="-I/usr/local/opt/openssl/include" \
            --global-option="-L/usr/local/opt/openssl/lib" psycopg2
Run Code Online (Sandbox Code Playgroud)

(此安装virtualenv在macOS上成功完成)


小智 12

conda安装psycopg适合我.它更新以下包以下包将更新:

conda:      3.19.1-py27_0 --> 4.0.5-py27_0
openssl:    1.0.2f-0      --> 1.0.2g-0
pip:        8.0.2-py27_0  --> 8.1.0-py27_0
setuptools: 19.6.2-py27_0 --> 20.2.2-py27_0
wheel:      0.26.0-py27_1 --> 0.29.0-py27_0
Run Code Online (Sandbox Code Playgroud)


小智 9

我在 Mac 上遇到了这个问题,尝试 ln -s 给了我 ln: /usr/lib/libssl.1.0.0.dylib: Operation not allowed 我不想弄乱我的系统。相反,对我有用的是简单地安装 psycopg2-binary : pip install psycopg2-binary

这个安装了psycopg2-binary-2.8.3版本


Jim*_*Bob 6

关于XL上面的答案,当我已经使用pip时,我不想使用Anaconda,所以我只是给了它为我工作的Postgres库的路径(我在Mac OS 10.10上使用PostgreSQL.app) )...

export DYLD_FALLBACK_LIBRARY_PATH=/Library/PostgreSQL/9.5/lib:$DYLD_FALLBACK_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

32509 次

最近记录:

5 年,11 月 前