PyCharm 3.1 在索引期间永远挂起并且无法使用

Posted

技术标签:

【中文标题】PyCharm 3.1 在索引期间永远挂起并且无法使用【英文标题】:PyCharm 3.1 hangs forever during indexing and unusable 【发布时间】:2014-03-02 05:52:44 【问题描述】:

更新到 3.1 后,PyCharm 在“索引”包期间永远挂起(在 OSX 10.9.1、Python 2.7.5 上)。

对我来说,这发生在索引 scipy (0.13.3) 时。如果我取消安装scipy,索引似乎已完成,但随后再次挂起在“pythonstubs”上。 UI 变得无响应,CPU 使用率达到最大值,我无法执行任何操作,不得不强制退出应用。

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

FWIW,我可以毫无问题地从系统命令行运行 Python 脚本(包括一些使用 scipy 和许多其他最近更新或安装的软件包),因此 Python 安装是正确的。

有没有人遇到过类似的问题或找到解决方法?

【问题讨论】:

你为什么要在这里发帖而不是在PyCharm's issue tracker 中打开问题? @Bakuriu:看看是否有人“遇到过类似的问题或找到解决此问题的方法”。这也可能是 scipy(最近在 PyPi 上更新)的一个模糊问题,其范围超出了 PyCharm。 (你怎么知道我没有打开问题。?) 这个问题似乎是题外话,因为它是一个民意调查。 OP 只是想知道“其他人是否遇到过同样的问题”,但这样的问题没有真正的答案,也不适合 *** 允许的主题。 @这是一个介绍问题解决方案请求的英语习语:很可能任何有解决方案的人都会“遇到类似的问题”(viz.最新的scipy 和 IDE 或其他索引包的软件)。 你在[使用 OpenJDK][1] 吗? PyCharm 显然不喜欢它。 [1]:***.com/questions/11477719/pycharm-install-jdk 【参考方案1】:

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

理论上,可以非常快速地匹配任何正则表达式(存在线性算法),> 但是许多正则表达式库的开发人员根本不费心去实现它。

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 项中的 RegEx,看看是否可以缩小匹配范围以提高性能。

【讨论】:

这听起来很有希望。您是否有机会解释如何执行此部分的机制:“查看 TODO 项中的 RegEx,看看是否可以缩小范围”?【参考方案2】:

This 为我解决了这个问题:

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

我的问题可能是我添加了太多的文件作为索引,这让 PyC​​harm 不堪重负。所以我将不需要索引的文件的文件夹标记为“已排除”并使用上面的选项。

【讨论】:

缓存清理有很多副作用。它也不会解决 Java 的 RegEx 库的根本问题。 @raxacoricofallapatorius 目前还不清楚这是否是真正的问题。你只是假设它是(它可能是)。对我来说,在出现完全相同的症状后,缓存清除就起到了作用。 这就是 JetBrains 所说的“真正”问题所在。缓存清理是否永远修复了它?您是否看到字符串长度呈指数增长(或至少比线性增长快得多)? 清除缓存后 IDE 正常启动并且没有索引。我昨天也安装了 scipy 并且可能没有重新启动。当我这样做时(今天) - 我修复了完全相同的问题,即缓存清除。如果以后问题仍然存在,我可以更新,但我怀疑它会。在跟踪.Pycharm40/.../idea.log 之后,似乎一切都恢复了正常。 它从来没有为我工作过(至少不可靠),而 JetBrains 的建议永远有效。【参考方案3】:

我也遇到过类似的情况: 我刚刚安装了 Anaconda(2),当我想更改解释器时,它会继续索引并崩溃。 “无效缓存”不起作用。 需要做的是添加解释器(Project -> Project Interpreter)并更改Run -> Edit Configurations。 我收到了here的回复

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于PyCharm 3.1 在索引期间永远挂起并且无法使用的主要内容,如果未能解决你的问题,请参考以下文章

Angular HTTPClient (HTTP) 请求永远挂起

我的远程 Postgres 查询似乎永远挂起

Windows 打开对话框在启用地址清理程序的情况下永远挂起

Chromecast 视频播放会在一段时间后永远挂起

executeFetchRequest 挂起并且从不返回错误或继续

Azure Blob存储DownloadToStreamAsync在网络更改期间挂起