macOS自带Python2.7删除之后的悲剧

python基础

浏览数:104

2020-5-31

起因

今天打开xcode想要开始继续写项目的时候悲剧了.

Loading a plug-in failed. The plug-in or one of its prerequisite plug-ins may be missing or damaged and may need to be reinstalled.

尝试用终端打开看看报错信息

open /Applications/Xcode.app/Contents/MacOS/Xcode

报错详情

/Applications/Xcode8.app/Contents/PlugIns/DebuggerLLDB.ideplugin), error = Error Domain=NSCocoaErrorDomain Code=3587 "dlopen_preflight(/Applications/Xcode8b.app/Contents/PlugIns/DebuggerLLDB.ideplugin/Contents/MacOS/DebuggerLLDB): Library not loaded: /System/Library/Frameworks/Python.framework/Versions/2.7/Python
Referenced from: /Applications/Xcode8.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/LLDB Reason: no suitable image found. Did find: 
/System/Library/Frameworks/Python.framework/Versions/2.7/Python: code signing blocked mmap

尝试

想都没想,肯定是昨晚在升级python的时候 删掉了旧版的python2.7导致的. 于是去python官网下载了python2.7.13,安装配置之后还是没用.查了一下macOS10.12原始版本是2.7.10,下载安装之后还是没用.

探索

然后google一下(科学上网楼主用easysocks+shadowsocksx-ng)

StackOverflow找到也有个哥们遇到相同问题.

于是用他说的方法下在系统镜像去里面找找原版.当时在/system/library/Framework/文件夹下自由系统相关的库,到是有一个installation文件夹,里面有一些安装包,由于安装包太大(4G),他也没说在系统那个目录下,放弃尝试. 我陷入了沉思,问下了技术交流群,有人说重装xcode,我觉得不行,这并不是xcode本身的为题,而是扩展库出错.

醒悟

难道apple提供的python和python官网下载的不一样?带着这个疑问查看了一下目录结构果然.

macOS自带多了几个文件夹:_CodeSignature,Extras等猜测应该是用来打包签名用的,这也就解释了报错code signing blocked mmap的原因

成功恢复

现在要去哪里找原版呢,之前是直接rm -f删掉的没有后悔药,还好有做TimeMachine备份,终于在备份盘中找到原版python2.7,成功恢复.

总结:假如你需要修改系统库或者环境变量是一定要做好备份,笔记记好还原步骤.突然有一种想法:apple在macOS中内置python,可能是因为其他软件会依赖他,那ruby呢会不会也有一些功能是依赖它实现的呢,可以研究一下.

作者:她吃西红柿