在Lego EV3dev上没有名为pygame.base的模块



在我的乐高 ev3 机器人上,我当前的项目是将 pygame 操纵杆模块添加到我的机器人中并使其正常工作,以便我可以使用我的 PS1 遥控器来控制乐高 ev3 机器人。我已经将 python 中的站点包中的整个文件夹放到我的机器人上,我没有收到错误no module named pygame但我收到错误no module named pygame.base和许多其他类似no module named pygame.constants

我查看了机器人的日志文件,该文件显示了代码在运行机器人时出现的文件上可能存在的错误。我尝试通过我的计算机运行机器人python文件,我也尝试过通过机器人本身都会导致相同的错误。

我尝试过在我的计算机上运行相同的pygame,使用我自己的python游戏与pygame一起尝试创建,并且该游戏工作正常,没有导入错误。

我已经尝试查看 pygame 的__init__.py代码,错误来自哪里,出现所有错误的代码如下所示:

pygame__init__.py中的代码有一些导入,我认为错误来自:

from pygame.base import *
from pygame.constants import *
from pygame.version import *
from pygame.rect import Rect
from pygame.compat import geterror, PY_MAJOR_VERSION
from pygame.rwobject import encode_string, encode_file_path
import pygame.surflock
import pygame.color
Color = color.Color
import pygame.bufferproxy
BufferProxy = bufferproxy.BufferProxy
import pygame.math

当我在机器人上或通过Visual Studio代码运行代码时,实际输出为:

Traceback (most recent call last):
File "/home/robot/drive/main.py", line 10, in <module>
File "/home/robot/drive/pygame/__init__.py", line 136, in <module>
ImportError: no module named 'pygame.base'

图片

Python 具有列表sys.path,其中包含在其中查找模块的文件夹。有文件夹site-packages所以import可以在site-packages/pygame中找到pygame,在site-packages/pygame/base中找到pygame.base

如果pygame移动到文件夹/home/robot/drive则必须在导入之前将其添加到sys.path

import sys
sys.path.append('/home/robot/drive/')
import pygame

然后它可以在/home/robot/drive/pygame中找到pygame,在/home/robot/drive/pygame/base中找到pygame.base


通常,Python 会在运行代码的文件夹中查找模块,以便import pygame无需将文件夹添加到sys.path即可找到/home/robot/drive/pygame,但__init__.py在文件夹/home/robot/drive/pygame中运行,因此from pygame.base import *会查找/home/robot/drive/pygame/pygame/base并且路径中有很多pygame。如果它使用相对路径from .base import *那么它将搜索/home/robot/drive/pygame/./base这意味着/home/robot/drive/pygame/base,因此它将使用正确的路径,并且无需将文件夹添加到sys.path

最新更新