You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用python -m pip install -e安装本地sumobot包报ModuleNotFoundError如何解决

问题原因
  • 解释器版本不匹配:你执行安装时用的python和运行测试脚本时用的python指向的不是同一个解释器,树莓派默认预装Python2、Python3两个版本,常出现pip将包安装到Python3的库目录,运行脚本时却调用了Python2的情况。可执行python -c "import sys; print(sys.executable)"和python -m pip --version对比路径确认是否匹配。
  • 包结构不符合规范:setup.py中声明packages=['sumobot']要求项目根目录下必须存在sumobot文件夹,且sumobot、sumobot/robot_hardware两级目录下都必须有__init__.py文件(可为空),否则setuptools无法识别为Python包。
  • 脚本运行方式错误:如果你直接进入tests目录执行python test_motor.py,Python不会自动将项目根目录加入导入搜索路径,也会导致找不到sumobot包。
  • 可编辑安装记录失效:你当前pip list显示的是本地源码路径,说明你用了-e可编辑模式安装,如果之后移动过源码目录,会导致安装的路径链接失效。
临时修复步骤
  1. 确认项目结构符合下述要求:
项目根目录/
├── setup.py
├── sumobot/
│   ├── __init__.py
│   └── robot_hardware/
│       ├── __init__.py
│       └── motor.py
└── tests/
    └── test_motor.py
  1. 回到项目根目录,重新执行安装命令:python -m pip install -e . --force-reinstall
  2. 统一用模块模式运行脚本,不要直接执行单独的py文件:
    python -m tests.test_motor
更优的项目实现方案

目前你用的distutils已经被Python官方弃用,推荐用现代打包规范管理项目:

  • 废弃setup.py,在项目根目录新建pyproject.toml作为打包配置文件,示例配置如下:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "sumobot"
version = "0.1.0"
description = "is a sumobot!"
packages = ["sumobot"]
  • 包内模块互相调用时优先用相对导入,比如sumobot目录下的其他模块要导入motor,可以写from .robot_hardware.motor import RawMotor,不依赖包的全局安装路径,兼容性更强。
  • 如果需要频繁修改调试代码,始终用-e可编辑模式安装包,修改代码后不需要重新安装即可生效。

内容的提问来源于stack exchange,提问作者NickyEichen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:18:05