在我的Lego ev3机器人上,我当前的项目是将pygame游戏杆模块添加到我的机器人中并使其开始工作,因此我可以使用PS1遥控器来控制Lego ev3机器人。我已经将Python中站点软件包中的WHOLE文件夹放到了我的机器人上,但没有收到错误no module named pygame
,但之后却收到了错误no module named pygame.base
和许多其他错误,例如no module named pygame.constants
。
我查看了机器人的日志文件,该文件显示了您每次运行机器人时所附带文件中的代码可能存在的错误。我尝试通过计算机运行机器人python文件,也尝试通过机器人本身运行,导致相同的错误。
我尝试在自己的计算机上运行自己的python游戏,并且尝试使用pygame创建自己的python游戏,并且在该游戏上运行良好,并且没有任何导入错误。
我已经尝试研究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'
答案 0 :(得分:0)
Python的列表sys.path
带有在其中查找模块的文件夹。有文件夹site-packages
,因此import
可以在pygame
中找到site-packages/pygame
,在pygame.base
中找到site-packages/pygame/base
如果您将pygame
移至文件夹/home/robot/drive
,则必须在导入前将其添加到sys.path
import sys
sys.path.append('/home/robot/drive/')
import pygame
然后可以在pygame
中找到/home/robot/drive/pygame
,在pygame.base
中找到/home/robot/drive/pygame/base
通常,Python在运行代码的文件夹中查找模块,因此import pygame
可以找到/home/robot/drive/pygame
而无需将文件夹添加到sys.path
中,但是__init__.py
在文件夹{{1}中运行},因此/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