Mac python2异常情况

860 阅读2分钟

Mac python2异常情况

前面小编写了一篇文章,关于 Mac工具集 ,最近折腾下电脑, 装了一些新的软件,如item2,Splashtop XDisplay (把ipad作为副屏的软件,也可升级ipad到ipad os,sidebar可以做副屏)。重启了电脑然后之后,像 autojump  cd 等等工具不好使了。 这种事情避免以后发生, 特此在博客中备份。

追踪和记录

错误信息

ImportError: dlopen(/usr/local/Cellar/python/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyCodecInfo_GetIncrementalDecoder

查阅资料之后

由于我本地装了python3和 python2.7.6, 导致不同版本造成不同的原因。

通过查找 _io.so

sudo find / -name _io.so

发现有不同版本的 _io.so

/usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so

一个是系统级别的, 一个是python2.7.

用系统级别的 替换 python2.7, 之后重新测试。

发现 系统级命令 cd等好用了

autojump错误处理

Traceback (most recent call last):
  File "/usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py", line 147, in <module>
    globals()[__func_name] = __get_hash(__func_name)

看起来像 python的hashlib异常。 因为我这边都是用 brew来装的python

使用 brew doctor诊断之后,发现建议 重新link python

brew link --overwrite python

如果你也有相关的问题, 不妨使用 brew doctor 诊断。特别对于对错误不好排查的时候, brew给的建议或许很有用。 处理完之后,发现电脑里面有python3 和 python2.

由于python官方以后放弃 python2的更新, 使用alias将python指向 python3.

echo "alias python="/usr/local/bin/python3"" >> ~/.zshrc

这样以后电脑的使用就一个 python,老的python2,交给一些使用python2的库就行。

总结

如果你也用mac,用了brew尽量将他作为唯一的包管理工具, 同时保证系统里面某些版本的一致性, 如果非要折腾建议在docker等容器里折腾。

更多技术内容关注: github.com/jiangtao/bl… .