问题描述+解决方案:

第一阶段:

从官网下载Anaconda之后,安装,一切正常。打开Anaconda navigator,提示我是否更新,我选了remind me later(埋个伏笔)。

接着点Spyder,打不开。点击spyder之后,spyder的启动图标可以正常显示,图标下面一行小字load各种东西也正常,散热风扇也开始rou~rou~的转,但最后显示load main window之后就自动闪退了,什么也没有,任何错误信息都看不到,散热风扇也歇了。

艰难的探索过程略去……

最终可行解决方案:

1.打开Anaconda Prompt,输入spyder --new-instance

spyder会启动,然后闪退…但Anaconda Prompt 会显示出错信息,我上面显示有四行:

link image0 hasn't been detected!
Bad file descriptor (bundled\zeromq\src\epoll.cpp:100)
[一大串数字:ERROR:broker_win.cc(59)] Error reading broker pipe: 管道已结束。 (0x6D)

[一大串数字:ERROR:broker_win.cc(59)] Error reading broker pipe: 管道已结束。 (0x6D)

2.继续在Anaconda Prompt中输入pip check

会出现几行字,有两行与spyder有关,其中一行显示:

spyder requires pyqt5, which is not installed

另一行是说spyder需要另一个包,也没安装,但我不记得是什么了,但它的安装过程跟pyqt5一样。下面只说pyqt5的方法

3.输入pip install pyqt5==5.12.3

(如果只输入pip install pyqt5,他会自动安装最新版本,然后有红字提醒,意思大概是spyder要求pyqt5的版本不能高于5.13。这时,需要输入pip uninstall pyqt5,把最新版本卸掉,再重新安装旧版本。如果你想查看有哪些旧版本可以选择,输入pip install pyqt==5.33,==后面不一定是5.33,只要是个不存在的版本号就行,他会报错,并且显示出有哪些版本可供选择。我选的是5.12.3)

这时应该会提示还有一个包pyqtwebengine也要求版本要低于5.13

那就继续输入pip install pyqtwebengine==5.12.1

4.输入spyder --new-instance,尝试再次启动spyder。

这一次,spyder依然会闪退,但报错信息只剩下一行:

Bad file descriptor (bundled\zeromq\src\epoll.cpp:100)

这说明我们的道路是正确的!至少已经解决了部分问题。剩下的问题是另一个包pyzmq的问题,下面我们开始解决它(我不知道大佬们怎么知道是这个包的问题,但我照着做确实解决了……莫非是zeromq跟zmq长得很像,才发现的?)。

5. 输入pip uninstall pyzmq

(卸载是因为pyzmq版本过高,不匹配。你可以输入pip show pyzmq 查看当前版本,不出意外的话,应该是22.x.x)

再输入pip install pyzmq==19.0.2安装旧版本

6. 再次输入spyder --new-instance

它成功启动了!!!!!

However,好奇害死猫…

我tm就是手贱

重新启动Anaconda navigator,它再次提示要不要更新,我点了是…然后升级到了2.1.2,然后spyder又打不开了。这一次,它能进入spyder,但就一秒,它就闪退了。

最终可行解决方案:

1.再次打开Anaconda prompt,简单排查

输入pip check

这时,它没有显示关于spyder的报错,证明pyqt5那俩包还正常。

输入spyder --new-instance

它会报错,报一大堆错,我也看不懂…翻来覆去就在那错误里看见两个字:pyzmq。然后说在里面找不到REC之类云云。我猜,这大抵又是pyzmq出了问题。

2.输入pip uninstall pyzmq卸掉pyzmq那厮

输入pip install pyzmq==20.0.0再装一个新一点的版本(这里可以用上面说的那个方法,给他指定一个不存在的版本,看有哪些版本可以安装,我选的是20.0.0,你们可以试一试别的版本行不行,不要尝试最新的,最新的我试了,不行)

3.重启spyder,大功告成

咱也不知道那些包都是干什么的,为什么版本之间不会兼容。反正这样一套流程下来,确实是能用了。

我把我的过程写出来,以供大家参考。大家遇到的问题可能与我的不一样,不要全盘照抄,找一找自己的是哪里出了问题,再去解决。