Python PyCharm 3.1在索引期间永久挂起,无法使用

Python PyCharm 3.1在索引期间永久挂起,无法使用,python,regex,crash,pycharm,Python,Regex,Crash,Pycharm,更新到3.1后,PyCharm在包的“索引”过程中永远挂起(在OSX 10.9.1、Python 2.7.5上) 对我来说,这发生在索引scipy(0.13.3)时。如果我安装了unistallscipy,索引似乎完成了,但随后又挂起在“pythonstubs”上。用户界面变得无响应,CPU使用量达到最大值,我无法做任何事情,不得不强制退出应用程序 如果重新安装scipy,PyCharm将再次挂起在scipy扫描的同一位置(请参见对话框的屏幕截图): FWIW,我可以从系统命令行运行Pytho

更新到3.1后,PyCharm在包的“索引”过程中永远挂起(在OSX 10.9.1、Python 2.7.5上)

对我来说,这发生在索引
scipy
(0.13.3)时。如果我安装了unistall
scipy
,索引似乎完成了,但随后又挂起在“pythonstubs”上。用户界面变得无响应,CPU使用量达到最大值,我无法做任何事情,不得不强制退出应用程序

如果重新安装scipy,PyCharm将再次挂起在scipy扫描的同一位置(请参见对话框的屏幕截图):

FWIW,我可以从系统命令行运行Python脚本(包括一些使用
scipy
的脚本和许多其他最近更新或安装的软件包),而不会出现问题,因此Python安装是可靠的


是否有人遇到过类似的问题或找到了解决此问题的方法?

问题在于可能已定义用于标识待办事项的任何正则表达式匹配。PyCharm用于匹配这些项的Java标准正则表达式库使用指数复杂度的算法来搜索
'*.a'
和类似模式

理论上,可以非常快地匹配任何regexp(存在一个线性算法),>但是许多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
一般来说,如果索引需要很长时间或挂起,请查看TODO项目中的正则表达式,看看是否可以缩小匹配范围以提高性能。

是什么解决了我的问题:

在主菜单上,选择文件|使缓存无效/重新启动。此时将显示Invalidate Caches(无效缓存)消息,通知您缓存将在下次启动时失效并重建。使用对话框中的按钮可使缓存无效、重新启动IntelliJ IDEA或两者兼而有之


我的问题可能是我添加了太多的文件作为索引,这让我不知所措。因此,我将不需要索引的文件的文件夹标记为“排除”,并使用上面的选项。

我也有同样的问题,“文件|无效缓存/重新启动”没有帮助,因为Pycharm根本没有响应。我在我的主目录中找到了“.Pycharm50”目录——它包含配置文件。在它被删除后,Pycharm就好像你刚刚下载了一样,一切都很顺利。

我也遇到过类似的情况: 我刚刚安装了Anaconda(2),当我想更改解释器时,它将继续索引并崩溃。 “使缓存无效”将不起作用。 需要做的是添加解释器(
项目->项目解释器
)并更改
运行->编辑配置

我从

得到回复,你为什么在这里发帖,而不是在中打开一个问题?@Bakuriu:看看是否有人“有过类似的问题或找到了解决这个问题的方法”。这也可能是
scipy
(最近在PyPi上更新)的一个模糊问题,其范围超出了PyCharm。(你怎么知道我没有提出问题?)这个问题似乎离题了,因为这是一个民意测验。OP只是想知道“其他人是否遇到过同样的问题”,但这样的问题没有真正的答案,也不适合StackOverflow允许的主题。@这是一个英语成语,用来介绍问题解决方案的请求:有解决方案的人很可能“遇到过类似的问题”(即,最新的
scipy
tripping-up和IDE或其他为软件包编制索引的软件)。您是否[使用OpenJDK][1]?PyCharm显然不喜欢它。[1]:缓存清理有很多副作用。它也不能解决Java的RegEx库的根本问题。@raxacoricofallapatorius不清楚这是否是真正的问题。你只是假设它是(而且可能是)。对我来说,缓存清理在出现完全相同的症状后起了作用。JetBrains说这是“真正的”问题是。缓存清理是否永久修复了它?您是否看到时间随着字符串长度呈指数增长(或至少比线性增长快得多)了?在缓存清理之后,IDE正常启动,没有索引那么长。我昨天也安装了scipy,可能从那以后就没有重新启动。当我(今天)重新启动时-我的问题与缓存清除问题完全相同。如果问题以后仍然存在,我可以更新,但我怀疑它是否会更新。在跟踪
.Pycharm40/../idea.log
后,似乎一切都恢复正常。它从未对我起作用(至少不可靠),JetBrains的建议是永久性的。这听起来很有希望。你有没有可能解释一下如何做这部分的机制:“看看你的TODO项目中的正则表达式,看看你是否可以缩小范围”?