我已经安装了Python Arcade
pip install 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
>>> Python版本为3.8.10,操作系统为Ubuntu20.04,但我无法克服这个错误。
发布于 2022-06-03 10:02:24
根据@mkrieger1 1的响应和显示的错误,我执行了以下步骤:
vim /home/brian/.local/lib/python3.8/site-packages/pyglet/input/evdev.py
在顶部的其他import部分下面添加了一行
import typing
然后转到第583行(由于上面的添加,现在是584行),并进行了更改。
def get_controllers(self) -> list[Controller]:
至
def get_controllers(self) -> typing.List[Controller]:
示例程序现在正在工作。
如果其他人也处于同样的情况,那么希望这是一个快速的解决办法。
发布于 2022-06-03 09:43:23
这是pyglet库中的一个已知错误:https://github.com/pyglet/pyglet/issues/614
代码使用list[Controller],它需要Python3.9(参见佩普585)。
这个行是在提交3c2c7de中引入pyglet的,并在提交63341c4中进行了修复(10天前至今),它将其更改为List[Controller] ( List是从标准typing模块导入的)。
https://stackoverflow.com/questions/72487597
复制相似问题