You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下Python3.8导入Arcade库报TypeError问题

问题环境
  • 操作系统:Ubuntu 20.04
  • Python 版本:3.8.10
问题表现

执行安装命令:

pip install arcade

命令执行完成无报错,但后续运行Arcade示例代码、或是在Python交互命令行执行import arcade导入库时,均会触发错误,完整报错信息如下:

>>> import arcade
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/brian/.local/lib/python3.8/site-packages/arcade/__init__.py", line 250, in <module>
    from .joysticks import get_game_controllers
  File "/home/brian/.local/lib/python3.8/site-packages/arcade/joysticks.py", line 1, in <module>
    import pyglet.input
  File "/home/brian/.local/lib/python3.8/site-packages/pyglet/input/__init__.py", line 179, in <module>
    from .evdev import get_devices as evdev_get_devices
  File "/home/brian/.local/lib/python3.8/site-packages/pyglet/input/evdev.py", line 509, in <module>
    class EvdevControllerManager(ControllerManager, XlibSelectDevice):
  File "/home/brian/.local/lib/python3.8/site-packages/pyglet/input/evdev.py", line 583, in EvdevControllerManager
    def get_controllers(self) -> list[Controller]:
TypeError: 'type' object is not subscriptable
错误原因

报错由依赖版本不兼容导致:
报错触发点是类型标注list[Controller],该内置类型下标的泛型写法从Python 3.9版本才开始支持,Python 3.8及更早版本无法解析该语法,因此抛出类型错误。执行pip install arcade时,pip默认拉取了最新版的pyglet(Arcade的核心依赖),该版本pyglet不再兼容Python 3.8,才触发了导入失败。

可行解决方案

二选一即可:

  • 保留现有Python 3.8环境,降级pyglet到兼容版本,执行命令:
pip install pyglet==2.0.10

降级完成后重新导入Arcade即可正常使用,该版本pyglet的类型标注适配Python 3.8语法规则,不会触发同类报错。

  • 升级本地Python版本到3.9或更高版本,从根源适配新版Arcade、pyglet的语法要求,后续也不会遇到其他同类低版本兼容问题。

内容的提问来源于stack exchange,提问作者Brian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 08:39:29