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!


develop

552 字

2018-09-30 12:01 +0800