Spyder闪退、启动失败的解决办法。UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xa9 in position 226······

Spyder版本号 [Spyder5.1.5   Python 3.9.12]

1. 闪退时的现象

早上还在用spyder分析数据,到下午再打开电脑就发现spyder闪退,利用anaconda的prompt进行启动,发现如下报错:

(base) PS C:\Users\LittleSun> spyder
Traceback (most recent call last):
  File "D:\Anaconda3\Scripts\spyder-script.py", line 10, in 
    sys.exit(main())
  File "D:\Anaconda3\lib\site-packages\spyder\app\start.py", line 237, in main
    mainwindow.main(options, args)
  File "D:\Anaconda3\lib\site-packages\spyder\app\mainwindow.py", line 1992, in main
    mainwindow = create_window(MainWindow, app, splash, options, args)
  File "D:\Anaconda3\lib\site-packages\spyder\app\utils.py", line 292, in create_window
    main.post_visible_setup()
  File "D:\Anaconda3\lib\site-packages\spyder\app\mainwindow.py", line 1222, in post_visible_setup
    self.projects.reopen_last_project()
  File "D:\Anaconda3\lib\site-packages\spyder\plugins\projects\plugin.py", line 578, in reopen_last_project
    self.open_project(path=current_project_path,
  File "D:\Anaconda3\lib\site-packages\spyder\plugins\projects\plugin.py", line 433, in open_project
    project_type_class = self._load_project_type_class(path)
  File "D:\Anaconda3\lib\site-packages\spyder\plugins\projects\plugin.py", line 864, in _load_project_type_class
    config.read(fpath)
  File "D:\Anaconda3\lib\configparser.py", line 697, in read
    self._read(fp, filename)
  File "D:\Anaconda3\lib\configparser.py", line 1020, in _read
    for lineno, line in enumerate(fp, start=1):
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa9 in position 226: illegal multibyte sequence

2. 反复试验的过程

查找网上各种解决办法,虽然很多都是'gbk'的问题,但是大家上面的的报错位置都不同。开始进行尝试。

  1. 用户名、电脑账户、电脑管理中的用户名称均为英文;
  2. 利用prompt输入命令行"pip check"查看第三方包是否冲突,结果是"No broken requirements found."-----说明包没有问题;
  3. 针对报错中指向的文件,修改原始文件"Anaconda3\lib\configparser.py"中encoding='utf-8'-----没效果,而且修改源文件可能会导致很多问题,但确实有人是这么解决了,可能情况不一样吧..;
  4. prompt中spyder--reset重置spyder,能够正常启动,但是关闭后重启问题依然闪退。-----治标不治本你总不可能每次都将spyder重置吧?

spyder--reset虽然没有解决根本问题,但是依然发现了这样一个现象:reset重置spyder后,能够正常启动,于是新建项目,打开原本的项目文件夹,发现无法载入新项目,依然为'gbk'的问题,于是删除原项目文件夹中".spyproject"文件,新建项目并载入文件夹,成功。可以正常运行py文件,但是关闭spyder后重新打开,又出现了闪退的问题,报错相同。

重复以上步骤,发现以下规律:删除上次运行的项目文件夹中".spyproject"文件,spyder能够正常启动,打开其他项目,只要其中包含".spyproject"文件时都无法载入项目文件夹,删除后载入项目可以运行,运行后重新打开spyder依然闪退。

3.结论

最后发现是由于我运行的py文件名称包含汉字,运行"汉字.py"后就会造成spyder再次启动时闪退,不运行只是存在项目文件夹中时则不会引发这个问题,猜测可能是".spyproject"会保存文件路径,中文会造成干扰,因此大家在遇到和我相同的问题发现spyder无法启动时,可以尝试以下操作

  1. 删除项目文件夹中的".spyproject"文件夹,重新打开spyder,看是否能够启动,如果能够启动,很大概率是跟我一样的问题,可以尝试将项目名称、以及该项目下的所有py文件改为英文名称,问题就可以解决了;
  2. 查看自己C盘中用户名是否为汉字、查看电脑属性-用户和组中,当前用户是否包含汉字,修改方法自行百度,或者新建英文用户,删除现在的中文用户,或者重装系统;(由于作者本身全路径都是英文,所以并没有用到这一条,但是我怀疑这一样会导致'gbk'报错,也有不少小伙伴是因为这个原因)
  3. 作者在之前装PyQt5时,也出现过spyder闪退的问题,后来查看是由于版本不对,因为Spyder本身界面也是PyQt5做的,因此也有可能是第三方包不兼容的问题,可以在prompt中输入pip check进行查看,是否有问题,按照提示一步步操作即可。

在之前用spyder4时,并没有现在这些问题,汉字名称的py文件也不会出现问题,spyder5中bug很多,也在不断迭代更新,不如spyder4更加稳定。不过我也只是发现了这一点问题,没有搞懂为什么在project中就不可以运行"中文.py",但是不打开任何project,只运行单个文件,不会有任何问题,所以问题还是出在".spyproject"文件夹上,猜测可能是这个文件夹中保存文件路径时,中文会造成问题,虽然不明白具体是为什么,但是多次试验,方法确实有效,希望能帮有同样情况的小伙伴解决问题。

你可能感兴趣的:(python,开发语言,pyqt)