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 或两者兼而有之。
我的问题可能是我添加了太多的文件作为索引,这让 PyCharm 不堪重负。所以我将不需要索引的文件的文件夹标记为“已排除”并使用上面的选项。
【讨论】:
缓存清理有很多副作用。它也不会解决 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) 请求永远挂起
Windows 打开对话框在启用地址清理程序的情况下永远挂起