不弃_ 发表于 2022-2-16 19:47:03

easygui

报错:module 'collections' has no attribute 'Sequence',这是怎末回事?




import easygui as g
import sys

while 1:
      g.msgbox("嗨,欢迎进入第一个界面小游戏^_^")

      msg ="请问你希望在鱼C工作室学习到什么知识呢?"
      title = "小游戏互动"
      choices = ["谈恋爱", "编程", "OOXX", "琴棋书画"]
      
      choice = g.choicebox(msg, title, choices)

      # 注意,msgbox的参数是一个字符串
      # 如果用户选择Cancel,该函数返回None
      g.msgbox("你的选择是: " + str(choice), "结果")

      msg = "你希望重新开始小游戏吗?"
      title = "请选择"

      # 弹出一个Continue/Cancel对话框
      if g.ccbox(msg, title):
                pass            # 如果用户选择Continue
      else:
                sys.exit(0)   # 如果用户选择Cancel

ckblt 发表于 2022-2-16 19:52:42

这个是你easygui与python的版本不兼容,
可以把python版本降低,
也可以:https://fishc.com.cn/thread-204504-1-1.html

isdkz 发表于 2022-2-16 19:52:55

本帖最后由 isdkz 于 2022-3-15 19:45 编辑

这是 python3.10 的问题,因为 python3.10 把 Sequence 这个类移至了 collections.abc 模块,

而 easygui 还没更新版本来适配 python3.10,依然使用 collections 模块引入 Sequence 这个类,所以就出错了,

你可以看看这个,https://stackoverflow.com/questions/69596494/unable-to-import-freegames-python-package-attributeerror-module-collections,
里面的解答中有提到 collections 模块根据 python 版本的迭代历程

解决方法:
File "C:\Users\*****\AppData\Local\Programs\Python\Python310\lib\site-packages\easygui\boxes\choice_box.py", line 95, in make_list_or_none
    if not isinstance(obj, collections.Sequence):
AttributeError: module 'collections' has no attribute 'Sequence'

根据你相对应的报错信息找到 File 后面的这个文件,
比如我的是 C:\Users\*****\AppData\Local\Programs\Python\Python310\lib\site-packages\easygui\boxes\choice_box.py 这个文件,
这个路径有点长,你不用一级一级地找,直接把路径复制到资源管理器的地址栏即可,
注:你的路径可能会跟我的不一样,你根据你自己的报错信息那里复制

把这个文件的第一行 import collections 改成
import collections.abc as collections
就可以了

不弃_ 发表于 2022-2-17 11:07:58

isdkz 发表于 2022-2-16 19:52
这是 python3.10 的问题,因为 python3.10 把 Sequence 这个类移至了 collections.abc 模块,

而 easygu ...

我报错信息有四个文件,都改吗?



Traceback (most recent call last):
File "C:\Users\Lenovo\Desktop\新建文本文档.py", line 11, in <module>
    choice = g.choicebox(msg, title, choices)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python310\lib\site-packages\easygui\boxes\choice_box.py", line 38, in choicebox
    mb = ChoiceBox(msg, title, choices, preselect=preselect,
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python310\lib\site-packages\easygui\boxes\choice_box.py", line 123, in __init__
    preselect_list = make_list_or_none(preselect, cast_type=int)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python310\lib\site-packages\easygui\boxes\choice_box.py", line 95, in make_list_or_none
    if not isinstance(obj, collections.Sequence):
AttributeError: module 'collections' has no attribute 'Sequence'

不弃_ 发表于 2022-2-17 11:15:57

不弃_ 发表于 2022-2-17 11:07
我报错信息有四个文件,都改吗?




都一样{:5_109:},但是这文件找不到

isdkz 发表于 2022-2-17 11:20:36

本帖最后由 isdkz 于 2022-2-17 12:35 编辑

不弃_ 发表于 2022-2-17 11:15
都一样,但是这文件找不到

报错里面的文件肯定是存在的,你把 C:\Users\Lenovo\AppData\Local\Programs\Python\Python310\lib\site-packages\easygui\boxes\choice_box.py 这个直接粘贴到资源管理器的地址栏,

如果你嫌麻烦且信任论坛里大佬修订好的版本的话,
可以看这个 https://fishc.com.cn/thread-204504-1-1.html

不弃_ 发表于 2022-2-17 11:58:57

isdkz 发表于 2022-2-17 11:20
报错里面的文件肯定是存在的,你把 C:%users\Lenovo\AppData\Local\Programs\Python\Python310\lib\sit ...

E:\照片

isdkz 发表于 2022-2-17 12:03:44

本帖最后由 isdkz 于 2022-2-17 12:11 编辑

不要带双引号,直接填在我划线的地方
最好不要把后面那个 choice_box.py 也输到地址栏里
因为你的 .py 文件的默认打开方式不是编辑器的话就直接运行了

isdkz 发表于 2022-2-17 12:15:49

不弃_ 发表于 2022-2-17 11:07
我报错信息有四个文件,都改吗?




你看最后那个就行了

不弃_ 发表于 2022-2-17 13:14:06

isdkz 发表于 2022-2-17 12:15
你看最后那个就行了

找到了找到了{:5_108:}
感谢大哥

规律性误差 发表于 2022-3-11 23:12:22

isdkz 发表于 2022-2-16 19:52
这是 python3.10 的问题,因为 python3.10 把 Sequence 这个类移至了 collections.abc 模块,

而 easygu ...

感谢大哥,终于解决了

isdkz 发表于 2022-3-11 23:17:13

规律性误差 发表于 2022-3-11 23:12
感谢大哥,终于解决了

不客气{:5_109:},不过我很好奇你是怎么找得到这个帖子的?

规律性误差 发表于 2022-3-13 18:00:23

isdkz 发表于 2022-3-11 23:17
不客气,不过我很好奇你是怎么找得到这个帖子的?

就是搜的easygui然后一个一个找的
一开始环境变量搞了半天然后又是运行错误{:10_266:}{:10_266:}

fendou501 发表于 2022-5-5 15:21:15

B站看视频了解的fishc网站,没想到能人辈出,相知恨晚,奋起直追
页: [1]
查看完整版本: easygui