【问题标题】:no module named pygame.base on lego ev3dev乐高 ev3dev 上没有名为 pygame.base 的模块
【发布时间】:2019-12-30 00:24:30
【问题描述】:

在我的乐高 ev3 机器人上,我当前的项目是将 pygame 操纵杆模块添加到我的机器人中并让它工作,这样我就可以使用我的 PS1 遥控器来控制乐高 ev3 机器人。我已将 python 中 site-packages 中的整个文件夹放到我的机器人上,但我没有收到错误 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'

the picture

【问题讨论】:

  • 如果您将pygame 放入您自己的文件夹/home/robot/drive,那么您可能需要在导入pygame 之前将/home/robot/drive 添加到sys.path

标签: python visual-studio-code pygame ev3


【解决方案1】:

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 * 将查找 @987654342 @ 并且路径中有很多 pygame。如果它使用相对路径from .base import *,那么它将在/home/robot/drive/pygame/./base 中搜索,这意味着/home/robot/drive/pygame/base,因此它将使用正确的路径,并且无需向sys.path 添加文件夹即可工作

【讨论】:

  • 我已尝试将您上面显示的代码添加到我的代码中,但仍然出现错误。
  • 我的意思是我可以尝试将 WHOLE 的站点包添加到机器人中,但我认为当我尝试这样做时发生的事情是机器人非常困惑。也需要很长时间才能将其下载到执行此操作的机器人上
  • pygame 中的文件夹与您提到的不完全一样。他们不像/home/robot/drive/pygame/pygame/base。他们更像这样(点击图片
  • 添加整个文件夹没有意义,因为它不会改变问题 - 导入 pygame.base 时路径错误。如果它在文件夹/home/robot/drive/pygame 中的文件中运行import pygame.base,则/home/robot/drive/pygame + pygame.base` 给出路径/home/robot/drive/pygame/pygame/base,这是错误的路径。如果您将/home/robot/drive/(不带“pygame”)添加到sys.path,那么它将尝试找到/home/robot/drive/ + pygame.base,它给出/home/robot/drive/pygame/base,它应该可以工作。
  • 但这很奇怪,虽然我已经复制了您的代码
猜你喜欢
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
相关资源
最近更新 更多