Когда я пытаюсь запустить интерпретатор Python в lldb
, я вижу:
$ lldb
(lldb) script
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/usr/local/Cellar/python/2.7.14/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 52, in <module>
import weakref
File "/usr/local/Cellar/python/2.7.14/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.
Когда я проверяю, какая версия Python была запущена, Python сообщает, что это должен быть Python Homebrew (который символически привязан к этому месту):
>>> sys.executable
'/usr/local/opt/python/bin/python2.7'
Однако, спрашивая версию Python, возвращается версия, связанная с установкой Python по умолчанию, например.
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=10, releaselevel='final', serial=0)
И, просто чтобы подтвердить, версия Python на двоичном пути выше действительно отличается (обратите внимание на разницу в микро версии):
$ /usr/local/opt/python/bin/python2.7 --version
Python 2.7.14
$ /usr/bin/python --version
Python 2.7.10
Чтобы сделать вещи более запутанными, имя _remove_dead_weakref
существует в модуле _weakref
для моей установки на Homebrew Python, но не для установки по умолчанию:
$ /usr/bin/python -c "import _weakref; print _weakref._remove_dead_weakref"
Traceback (most recent call last):
File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute '_remove_dead_weakref'
$ /usr/local/opt/python/bin/python2.7 -c "import _weakref; print _weakref._remove_dead_weakref"
<built-in function _remove_dead_weakref>
Любая идея, что могло бы вызвать этот очевидный перекрестный разговор между моими установками Python с LLDB? Как я могу предотвратить это?