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… .