Получение ошибки _remove_dead_weakref для lldb

Каждый раз, когда я запускаю lldb на MacOS, я получаю следующую ошибку.

  File "<input>", line 1, in <module>
  File "/usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 52, in <module>
    import weakref
  File "/usr/local/Cellar/python@2/2.7.15_1/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

Я проверил, есть ли все файлы и имена.

Я не знаю, что вызывает эту проблему.

Любые идеи?

как вы запускаете lldb? это выглядит как нестандартная установка Brew (по крайней мере, Python) по любой причине, по которой вы просто не устанавливаете и не используете xcode, который поставляется с утилитами командной строки, включая lldb?

Brad Allred 14.09.2018 00:02

Я просто набираю "lldb" в терминал. Так мне нужно запустить с xcode? Я надеялся, что смогу просто использовать терминал ...

Carol Ward 14.09.2018 15:00

вы можете использовать lldb с терминала, но похоже, что вы вручную устанавливали вещи с помощью homebrew, а не просто устанавливали xcode вместе с инструментами xcode CLI, которые отлично работали бы с терминала.

Brad Allred 14.09.2018 18:14
6
3
598
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Фреймворк Python, который использует lldb, на самом деле идет вместе с системой, а не с Xcode, но кроме этого, Брэд использует это.

lldb ссылается на Python, который он использует для поддержки множества функций расширяемости. Несмотря на то, что lldb извлекает Python dylib из системной установки - потому что это то, с чем он связан - присутствие других Python (обычно обнаруживается, потому что другой двоичный файл python находится на вашем пути впереди / usr / bin / python) заставит Python выполнить прочитать файлы его библиотеки из другой установки Python. И это, кажется, в целом не очень хорошо.

В большинстве случаев, когда мы это видели, убедитесь, что / usr / bin / python находится на переднем плане на вашем пути, чтобы решить проблему. Также убедитесь, что PYTHONPATH не ссылается на файлы python в вашей боковой установке.

Кажется, это работает. Если я запускаю rust-lldb, я получаю исключение, указанное в OP. Если я запускаю PATH=/usr/bin/ ~/.cargo/bin/rust-lldb, все работает.

Jonah 12.03.2019 02:23

Так что в случае, если вы хотите сохранить более новый Python от Homebrew перед системным Python в вашем PATH, лучше всего создать свою собственную оболочку сценария оболочки lldb и поместить ее в ~/.local/bin (и сначала поместить ~/.local/bin в PATH)?

Lassi 18.08.2019 09:46

Чтобы использовать системный Python для lldb, но продолжать использовать Homebrew python для всего остального, сохраните этот сценарий оболочки как ~/.local/bin/lldb:

#!/bin/sh
unset PYTHONPATH
export PATH=/usr/bin:$PATH
exec lldb "$@"

Затем chmod +x ~/.local/bin/lldb, чтобы сделать его исполняемым. Убедитесь, что ~/.local/bin находится в вашем PATH и находится перед /usr/bin, где находится системный lldb.

Вам не нужно использовать этот трюк с самым последним lldb с TOT llvm.org или с Xcode 11, когда он выйдет.

Jim Ingham 19.08.2019 19:29

Другие вопросы по теме