Python3.10导入freegames包报collections无Sequence属性如何解决
问题原因
该报错由Python 3.10的版本向后不兼容特性导致:从Python 3.3开始,Sequence这类集合抽象基类就被迁移到了collections.abc子模块下,Python 3.10正式移除了collections模块下对这些类的旧别名引用。你安装的freegames 2.3.2是较老的版本,代码仍在使用旧的引用路径,因此触发属性不存在的报错。
解决方法
方法一:升级freegames到最新版本(推荐)
官方已在后续版本修复了Python 3.10+的兼容问题,直接执行升级命令即可:pip install --upgrade freegames如果提示权限不足,可添加用户安装参数:
pip install --upgrade --user freegames升级完成后重新导入即可正常使用。
方法二:手动修改freegames源码
如果因特殊需求必须使用2.3.2版本,可以手动修改报错的源码文件:- 打开报错提示的文件:
C:\Users\praty\AppData\Roaming\Python\Python310\site-packages\freegames\utils.py - 找到第77行代码:
class vector(collections.Sequence): - 将其修改为:
class vector(collections.abc.Sequence): - 保存文件后重新导入即可。
- 打开报错提示的文件:
方法三:代码运行前临时打补丁
不想修改第三方包源码的话,可以在导入freegames之前先给collections模块补全别名:import collections import collections.abc collections.Sequence = collections.abc.Sequence import freegames该方法仅对当前运行的脚本生效,不需要改动包的原始文件。
内容的提问来源于stack exchange,提问作者Himanshu Poddar
相关产品推荐
相关产品推荐

