macOS下lldb遇到_remove_dead_weakref的Import_Error
今天使用lldb遇到了_weakref的Import_Error问题,找了很久才找到合适的解决方法,开此文分享一下。
$ lldb
(lldb) script
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/usr/local/Cellar/python/2.7.15/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 52, in <module>
import weakref
File "/usr/local/Cellar/python/2.7.15/Frameworks/Python.framework/Versions/2.7/lib/python2.7/weakref.py", line 14, in <module>
from _weakref import (
ImportError: cannot import name _remove_dead_weakref
Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.
看到错误提示中有个关键字段 /usr/local/Cellar/python/2.7.15
,我们知道macOS下 homebrew 安装软件到 /usr/local/Cellar
目录下,所以猜测是不是自己安装的 python2.7.15 的问题。
那尝试卸载已安装的 python2.7.15:
brew uninstall python@2
结果得到提醒:
Error: Refusing to uninstall /usr/local/Cellar/python@2/2.7.15_1
because it is required by mongodb, which is currently installed.
You can override this and force removal with:
brew uninstall --ignore-dependencies python@2
哎呀,得到提示有依赖问题,没事儿!先按照 brew uninstall --ignore-dependencies python@2
强制卸载看看是不是这个版本python与lldb不兼容,卸载后,运行lldb,果然没有错误了!
看来真的是版本不兼容的问题,但是我还必须安装 python2.7.15,因为 mongodb 依赖最新的这个版本的python,还必须安装这个版本python,怎么办?
求助google,找到方法,强制 lldb 按照系统的 bin 环境运行——PATH=/usr/bin /usr/bin/lldb
^[Странное смешивание системы + homebrew Python с LLDB],就不会出现问题了。
每次这样运行 lldb 太麻烦了,何不 alias 一下,在终端下执行:
# 如果您使用bash,执行:
# echo 'alias lldb="PATH=/usr/bin /usr/bin/lldb"' >> ~/.bashrc
# 如果您使用zsh,执行:
echo 'alias lldb="PATH=/usr/bin /usr/bin/lldb"' >> ~/.zshrc
开启一个新的终端,运行 lldb
没有异常,Done!