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 запускается, как если бы вы только что его загрузили, все по-прежнему идет хорошо.