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\envschannels:- defaultsssl_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…
以上!