0

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

我查看了机器人的日志文件,其中显示了代码可能在您运行机器人时出现的文件中出现的错误。我已经尝试通过我的计算机运行机器人 python 文件,并且我也通过机器人本身尝试过它都导致相同的错误。

我尝试在我的计算机上运行相同的 pygame,使用我自己的 python 游戏和我尝试创建的 pygame,并且该游戏运行良好,没有任何导入错误。

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

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'

图片

4

1 回答 1

0

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

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

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

然后它可以找到pygamein/home/robot/drive/pygamepygame.basein/home/robot/drive/pygame/base


通常,Python 在您运行代码的文件夹中查找模块,因此无需添加文件夹import pygame即可找到但在文件夹中运行,因此会查找并且路径中有很多。如果它将使用相对路径,那么它将搜索哪种方式,因此它将使用正确的路径并且它可以在不添加文件夹的情况下工作/home/robot/drive/pygamesys.path__init__.py/home/robot/drive/pygamefrom pygame.base import */home/robot/drive/pygame/pygame/basepygamefrom .base import */home/robot/drive/pygame/./base/home/robot/drive/pygame/basesys.path

于 2019-08-25T17:49:04.553 回答