导入psycopg2库未加载:libssl.1.0.0.dylib
当我尝试运行命令时:
import psycopg2
我得到的错误:
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
到目前为止,我已经尝试brew install openssl
并引用(没有运气):
psycopg2安装错误 – 库未加载:libssl.dylib
http://joshuakehn.com/2013/10/13/Postgresapp-and-psycopg2-on-OS-X.html
没有findPsycopg2图片
而不是在系统库目录中使用符号链接,请设置$DYLD_FALLBACK_LIBRARY_PATH
以包含anaconda库。 例如:
export DYLD_FALLBACK_LIBRARY_PATH=$HOME/anaconda/lib/:$DYLD_FALLBACK_LIBRARY_PATH
编辑:有潜在危险,请先阅读评论!
看到一个更安全的答案如下: 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
然后将它们重新链接(用您的Mac用户名replaceYOURUSERNAME,我发现使用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
我相信其他的解决scheme不适合你,因为你的版本在anaconda。
在将我的头靠在墙上几个小时之后,这两个解决scheme都能保证工作:
选项1.这解决了我们的问题,而没有搞乱环境variables。 在你的shell中运行这个:
brew install --upgrade openssl brew unlink openssl && brew link openssl --force
繁荣! 这会升级libssl
和libcrypto
/usr/local
的符号链接。 现在import psycopg2
就像一个魅力。
选项2.如果由于某种原因,您希望维护usr/local
的当前符号链接,请在shell中运行以下命令:
export DYLD_FALLBACK_LIBRARY_PATH=$HOME/anaconda/lib/:$DYLD_FALLBACK_LIBRARY_PATH
只要确保用实际的libpathreplace上面的$HOME/anaconda/lib
。 在我的情况下,这是$HOME/miniconda2/envs/ali/lib
。
这只适用于你当前使用的shell / bash会话。为了使更改持久化,请将export
语句添加到~/.bash_profile
或~/.bashrc
文件中。
想法: IMO#1是解决这个问题的正确方法,但是为了避免一些人喜欢使用环境variables而不是修复符号链接(例如,他们拥有依赖于较老的openssl的软件文件版本)。
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
以后家酿不会让我强制链接openssl
以下工作正常:
pip install --global-option=build_ext \ --global-option="-I/usr/local/opt/openssl/include" \ --global-option="-L/usr/local/opt/openssl/lib" psycopg2
(这个安装在macOS上成功了一个virtualenv
)
关于XL的上面的答案,我不想在使用pip时使用Anaconda,所以我只是给了Postgres库的path(我在Mac OS 10.10上使用PostgreSQL.app )…
export DYLD_FALLBACK_LIBRARY_PATH=/Library/PostgreSQL/9.5/lib:$DYLD_FALLBACK_LIBRARY_PATH
我不得不稍微改变Scott Brennstuhl的回答:1.删除损坏的符号链接:
$ sudo rm /usr/lib/libssl.1.0.0.dylib $ sudo rm /usr/lib/libcrypto.1.0.0.dylib $ sudo rm /usr/lib/libpq.5.dylib
- 与postgres的包含驱动程序重新链接:
$ sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libssl.1.0.0.dylib /usr/lib $ sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libcrypto.1.0.0.dylib /usr/lib $ sudo ln -s /Applications/Postgres.app/Contents/Versions/9.4/lib/libpq.5.dylib /usr/lib
我的设置的味道是有点不同于OP:我在Mac上使用Postgres.app
,并在一个virtualenv
; 但症状相似。
对我来说,这发生在我的本地更新Postgres.app
从9.3到9.5之后,错误清楚地显示了libssl.1.0.0.dylib
的psycopg2
path指向旧的9.3数据目录位置(在这个错误?)。 在我的ENV
添加奇怪的东西或删除符号链接我不确定这种影响对我来说肯定不合适。 我通过卸载然后重新安装psycopg2
来解决这个问题,就像我在工作的时候一样 – 一些并不觉得非常危险的东西:
# In my virtualenv pip uninstall psycopg2 pip install psycopg2
那我一切都好!
执行以下操作来解决未加载的库: 如果在/ usr / local / Cellar目录中有openssl,则 libssl.1.0.0.dylib错误
sudo cp / usr / local / Cellar / openssl / << version >> / lib / libssl.1.0.0.dylib / usr / lib
完成第1步之后,如果还没有加载Library:libcrypto.1.0.0.dylib错误。 请执行下列操作
sudo cp / usr / local / Cellar / openssl / << version >> / lib / libcrypto.1.0.0.dylib / usr / lib
我试过pip安装psycopg2这是给类似的问题。 然后我尝试conda安装psycopg2,哪个工作! 还要确保你使用的点属于anaconda(哪个点子)