PyCharm 3.1 постоянно висит во время индексации и непригодности
После обновления до 3.1 PyCharm зависает навсегда (в OSX 10.9.1, Python 2.7.5) во время "индексации" пакетов.
Для меня это происходит при индексировании scipy
(0.13.3). Если я unistall scipy
, индексирование завершается, но затем снова зависает на "pythonstubs". Пользовательский интерфейс становится невосприимчивым, использование процессора максимизировано, и я не могу ничего сделать и вынужден принудительно закрыть приложение.
Если я переустанавливаю scipy, PyCharm снова висит в том же месте в scipy scan (см. захват экрана диалога):
![enter image description here]()
FWIW, я могу запускать скрипты Python из системной командной строки (включая некоторые, которые используют scipy
и многие другие недавно обновленные или установленные пакеты) без проблем, поэтому установка Python звучит.
У кого-нибудь была аналогичная проблема или найден способ обхода этого?
Ответы
Ответ 1
Проблема заключается в любых регулярных выражениях, которые могут быть определены для идентификации элементов TODO. Стандартная библиотека регулярных выражений Java, используемая PyCharm для сопоставления этих элементов, использует алгоритм экспоненциальной сложности для поиска '*.a'
и аналогичных шаблонов.
Теоретически можно очень быстро сопоставить любое регулярное выражение (существует линейный алгоритм), > но многие разработчики regexp libs просто не утруждают себя реализацией.
Такая же проблема существует для модуля Python re:
>>> from timeit import timeit
>>> timeit("import re; list(re.finditer('.*a', 'foo' * 10000))", number=1)
0.6927990913391113
>>> timeit("import re; list(re.finditer('.*a', 'foo' * 50000))", number=1)
17.076900005340576
В целом, если индексирование занимает много времени или зависает, посмотрите на RegEx в своих элементах TODO и посмотрите, можете ли вы ограничить область совпадений, чтобы повысить производительность.
Ответ 2
Это, это решение для меня:
В главном меню выберите Файл | Недействительный кеш/перезапуск. Появится сообщение Invalidate Caches, информирующее вас о том, что кэши будут аннулированы и перестроены при следующем запуске. Используйте кнопки в диалоговом окне, чтобы сделать недействительными кеши, перезапустить IntelliJ IDEA или и то, и другое.
Моя проблема, вероятно, в том, что я добавил слишком много файлов в индексы, и это перегрузило PyCharm. Поэтому я пометил папки файлов, которые мне не нужно индексировать как "Исключенные", и использовал этот вариант выше.
Ответ 3
У меня была аналогичная ситуация:
Я только что установил Anaconda (2), и когда я хотел сменить интерпретаторы, он будет продолжать индексирование и сбой.
"Invalidate Cache" не работает.
Что нужно сделать, это добавить интерпретатор (Project -> Project Interpreter
) и изменить Run -> Edit Configurations
.
Я получил ответ здесь
Ответ 4
У меня была та же проблема, и "File | Invalidate Caches/Restart" не помог, потому что Pycharm вообще не ответил. Я нашел каталог ".Pycharm50" в своем домашнем каталоге - он содержит файлы конфигурации. После его удаления Pycharm запускается, как если бы вы только что его загрузили, все по-прежнему идет хорошо.