Python: PyCharm 启动后总是不停的 updating indexes…
问题现象
updating indexes… 会在进度条将要到达终点时停止(图丢了。。。抱歉)
然后,会 indexes 很多无关目录(dirs),如下图:
首先说明下,这个问题很多人都遇到过,已经有了一些解决方案,但这些解决方案并不能够解决所有出现这个问题的情况,很不幸,我就是这遇到未知 bug 的人之一。
我最终解决这个问题之前,我尝试了目前已知的所有关于这个问题的方法,包括 百度、CSDN、知乎、博客园、Google、Stack overflow,然而没有一个 Solution 在我这里生效!
但,在尝试各种解决方案将近 6 h 后,我终于完全解决
了这个问题!从根本上
解决了这个问题!以后再遇到这个问题,按照这篇blog的思路,你一定可以解决!
同时,这个 bug 的解决绝对可以让你对 windows 10 的系统 应用程序调用过程
了然于胸,无比清晰!
先说原因:
首先,这个问题的出现,是由于多次安装、卸载 Anaconda、PyCharm、Miniconda 等开发环境,但每次卸载后仍有残余文件,造成 PyCharm 的 索引(Indexing) 机制紊乱造成的。
那么为什么会持续不停的 Updating indexes
呢?
首先我们可以看到,Updating indexes
正在进行相关目录的索引,但它却把很多其他的不在envs目录下的文件也索引了进来,因为索引的这些文件规模非常大,所以,它会一直不停的转( Updating indexes
),但是非常奇怪的是,我们配置的 conda 环境 明明是 D:\Anaconda\envs\test
而非C盘,那为什么会把C盘的文件索引进来呢?
起初,通过命令查看
conda config --show
发现,envs_dirs的字段值是这样的。
此时,我猜测是由于 envs_dirs 值造成的,于时移除掉envs_dirs中的envs的C盘环境配置路径可能会解决这个问题。
然而,事实却是:
添加 路径(dirs) 可以执行
然而, remove却是不允许操作的。。。
查了很多资料,也看过了conda的官方文档,然而并没有关于这个问题的说明,遂放弃这条思路。
虽然明白了不停的 updating indexes...
的原因,但起初的几小时内,还是没有解决。。。
Solutions I have been tried:
- Excluded 掉一些项目文件夹
- Invalidate and Restart
- 卸载、重新安装 PyCharm
- 卸载、重新安装 Anaconda
- 同时重新安装 Anaconda、 PyCharm
- 删除
C:/Users/你的用户名/
PyCharm 下对应的 缓存 cache 文件夹及其下所有内容 - C盘变红,剩余空间太小,清理 C盘空间
重做系统
你可以依次尝试以上方案,除了 “重做系统
” 以外,其他所有的 Solutions 都尝试过了以后,如果还没有效果,可以阅读以下内容:
既然可以明确只是 PyCharm、Anaconda 的问题,那么,只要重新安装PyCharm、Anaconda即可,没必要重做系统(重做系统是找不到奸细,而选择屠城的下下策👺)
windows 10 完全擦除 PyCharm、Anaconda
首先,在已经通过 “控制面板” 卸载 PyCharm、Anaconda 的基础上,再执行以下操作:
-
删除
C:/Users/你的用户名/
下包含 conda、PyCharm 字段的所有文件
-
删除
C:\Users\你的用户名\AppData\Local
下包含conda、PyCharm字段的所有文件
你也可以通过检索查看,C:\Users\你的用户名\
下的 conda、pycharm 是否已全部删除。
如果还有残留文件,请删除;如果没有了,那么说明Anaconda、PyCharm在你的电脑中已经完全移除了!
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
但,不要急,还有一些非文件的东西,你没有从你的计算机中移除!
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
打开 “我的电脑 —> 高级设置 ----> 环境变量
”
在上方 用户变量
下,找到所有关于Conda、PyCharm 的 用户变量
, 全部移除!
PYTHONPATH
下,除了你自己手动安装的Python环境位置以外的其他所有值,全部移除!
在上方 用户变量
下,从 Path 中,找到之前安装的残余 PyCharm、Anaconda,删除!
在下方 系统变量
下,找到所有关于Conda、PyCharm 的 系统变量
, 全部移除!
在下方 系统变量
下的 Path 中,找到所有关于Conda、PyCharm 的 系统变量
, 全部移除!
此时,你可以非常放心的说,你的电脑中关于 Anaconda、PyCharm 的所有文件以及信息已经全部移除,你的电脑如同从未安装过 Anaconda、PyCharm 一样!
擦除完成,重新安装 Anaconda、PyCharm
然后重新安装 Anaconda、PyCharm!
安装目录不要选择C盘!
安装成功后,配置 .condarc 文件:
在 C:/Users/你的用户名/
目录下,创建 .condarc 文件,在文件中添加如下信息:
envs_dirs:
- D:\Anaconda\envs
channels:
- defaults
ssl_verify: true
envs_dirs 为你的Anaconda安装路径的 envs
;
通过命令
conda config --show
查看:
.condarc 文件 中设置的 envs 排在首位,这样做的原因
是通过命令行直接创造环境会安装在首条 envs_dirs.
这样,通过 conda 命令创建环境可以会直接安装在 D:\Anaconda\envs
这里。
创建conda环境
conda create -n torch_env python=3.8
打开PyCharm项目,选择对应的 Conda 环境,Apply!
可以发现,PyCharm会很快的 updating indexes,并且只会 scanning and indexing 在.condarc中设置的、刚刚创建的 envs;
运行成功!
总结、反思:
问题得到了解决!
究其原因,是因为 Anaconda 多次安装、卸载,导致对应环境变量设置紊乱并且重复配置多个地址;
与此同时,是由于 PyCharm 的 索引 (indexing) 机制是首先查找计算机的环境变量下,用户变量、系统变量以及 它们的 Path 中,字段 conda、PYTHONPATH
、PyCharm
对应的 字段值(Value),从而选择所要 索引(indexing)
的目录。
由于一开始 环境变量 中,含有字段值 C:\Users\91328\.conda
,故,PyCharm 的 Python Interpreter
虽然设置的是 D:\Anaconda\envs 下的环境,却会因为 PyCharm 的 索引 (indexing) 机制,去直接查找 环境变量 中的 用户变量 PYTHONPATH
、conda
、PyCharm
对应的 字段值(Value)。
发现 字段值(Value) 中包含 C:\Users\91328\.conda\envs
,故 PyCharm 的 索引 (indexing) 机制会将 C:\Users\91328\.conda\envs
同父级目录的所有文件全部进行 索引 (indexing);💀💀💀
但通常 C:\Users\91328\
下的文件大小会有 几十个GB,所以,PyCharm 索引 (indexing) 如此大小的文件就会不停的一直 updating indexes… 直到 Forever…
以上!