一、问题描述
打开Anaconda Navigator时,一直卡在Initializing...没反应,如下图所示:
二、解决方案
进入Anaconda安装目录下找到并打开文件夹attribution(笔者Anaconda安装目录在D盘下,读者可自行查找自己安装目录中的attribution文件夹):
D:\Anconda3\Lib\site-packages\anaconda_navigator\utils\attribution\resources.py
找到上述文件夹中的 resources.py文件,没有编译器也没有关系,可以选择文件直接右键选择“在记事本中编辑”:
找到load_resource函数中的requests.get方法,在url后面加上“,timeout=30”即可。(timeout=30中的30可视情况而定,timeout=30
指定了请求的超时时间为 30 秒)
在Anaconda的一些旧版本中可能没有上述文件,此时找到utils文件夹(下面是我在虚拟机上安装的win11系统中安装Anaconda时的默认路径)中的abs.py文件:
C:\ProgramData\Anaconda3\Lib\site-packages\anaconda_navigator\utils\ads.py
选中abs.py文件右键->打开方式->记事本->仅一次,打开后在load方法中requests.get同样添加参数timeout即可:
⬇
保存后重启Anaconda Navigator,稍等一会即可!
还有个good idea( •̀ .̫ •́ )✧
直接挂t子,就不用这么繁琐了,嘿嘿嘿~(●ˇ∀ˇ●)~
三、问题分析
当 Anaconda Navigator 在初始化时卡住,可能是因为尝试连接到网络以获取更新或资源,而网络连接不稳定或超时导致无法完成,也可能是由于需要加载的资源或广告链接被墙,导致 Anaconda Navigator 在初始化时卡住。如果这些外部资源无法访问,Navigator 就会一直等待响应,造成初始化延迟或失败。这时,通过在 `resources.py` 文件中添加 `timeout` 参数,可以限制等待时间,从而避免长时间挂起。这样做使得 Navigator 在网络请求失败时能够更快地响应并继续运行。
timeout=30
指定了请求的超时时间为 30 秒。也就是说,如果在 30 秒内没有收到服务器的响应,请求将会被终止并引发一个 requests.Timeout
异常。这有助于避免在网络不稳定或服务器响应缓慢时无限期地等待,从而提高程序的健壮性和用户体验。