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

ROS中导入自定义Python模块失败报No module named Control问题求助

问题排查及解决步骤

核心错误原因

你的配置错误集中在setup.py路径映射、包声明,以及导入规则三个方面:

  • setup.py中的package_dir配置错误,无法正确映射包的实际存储路径
  • 未声明Control作为quantum_drone的子包,ROS不会将其加入Python路径
  • 导入语句不符合ROS Python包的导入规则

具体修改方案

1. 修正setup.py配置

将quantum_drone包根目录下的setup.py替换为如下内容:

#!/usr/bin/env python
# noinspection PyUnresolvedReferences
from distutils.core import setup
from catkin_pkg.python_setup import generate_distutils_setup
   
# fetch values from package.xml
setup_args = generate_distutils_setup(
     packages=['quantum_drone', 'quantum_drone.Control', 'quantum_drone.scripts'],
     package_dir={'': '.'},
 )
 
setup(**setup_args)

说明:package_dir={'': '.'}表示包根目录就是setup.py所在的当前目录,不需要额外嵌套src文件夹;同时显式声明所有需要导出的子包。

2. 修正所有Python文件的导入语句

  • simulator.py中的导入语句from Control import PID替换为:
    from quantum_drone.Control import PID
    
  • PID.py中的导入语句from MonotonicTime import monotonic_time替换为相对导入,避免包导入时报错:
    from .MonotonicTime import monotonic_time
    

3. 修正CMakeLists.txt配置

catkin_install_python仅需保留可执行脚本,不需要将模块文件安装到bin目录,修改为:

catkin_install_python(PROGRAMS
   scripts/simulator.py
   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

确保catkin_python_setup()行已取消注释。

生效操作

  1. 删除工作空间根目录下的build、devel文件夹,清除旧配置缓存
  2. 重新执行catkin_make编译
  3. 执行source devel/setup.bash激活环境
  4. 运行rosrun quantum_drone simulator.py即可正常导入模块

可选排查方案

如果仍有报错,可在simulator.py开头加入以下代码,运行时查看Python路径是否包含当前工作空间的devel/lib/pythonX/dist-packages目录:

import sys
print(sys.path)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:09:02