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

ROS2 Humble教程添加data_files后colcon build失败求助

ROS2 Humble: colcon build失败当添加data_files到setup.py时

问题详情

  • 环境:ROS2 Humble,跟随官方参数入门教程完成第一部分后正常,添加data_files配置到setup.py后执行colcon build失败
  • 错误输出:
Summary: 2 packages finished [4.96s]
  1 package failed: python_parameters
  1 package aborted: my_package
  1 package had stderr output: python_parameters
  2 packages not processed
Command '['/usr/bin/python3', '-c', 'import sys;from contextlib import suppress;exec("with suppress(ImportError):    from setuptools.extern.packaging.specifiers    import SpecifierSet");exec("with suppress(ImportError):    from packaging.specifiers import SpecifierSet");from distutils.core import run_setup;dist = run_setup(    \'setup.py\', script_args=(\'--dry-run\',), stop_after=\'config\');skip_keys = (\'cmdclass\', \'distclass\', \'ext_modules\', \'metadata\');data = {    key: value for key, value in dist.__dict__.items()     if (        not key.startswith(\'_\') and         not callable(value) and         key not in skip_keys and         key not in dist.display_option_names    )};data[\'metadata\'] = {    k: v for k, v in dist.metadata.__dict__.items()     if k not in (\'license_files\', \'provides_extras\')};sys.stdout.buffer.write(repr(data).encode(\'utf-8\'))']' returned non-zero exit status 1.
  • 当前setup.py中的data_files配置:
data_files=[
        (os.path.join('share', package_name), glob('launch/*launch.[pxy][yma]*')),
    ]
  • 现象:移除data_files配置后colcon build可正常运行,无论data_files是否包含内容都会触发构建失败

可能原因及解决方案

1. 缺失必要导入

检查setup.py顶部是否导入了os和glob,如果没有,添加以下代码:

import os
from glob import glob

2. Launch目录或文件路径问题

  • 确认包根目录下存在launch文件夹,若不存在则创建:
    mkdir -p launch
    
  • 确保launch目录下有符合匹配模式的文件(如xxx.launch.py),或者修改glob模式为更明确的写法:
    (os.path.join('share', package_name, 'launch'), glob('launch/*.launch.py')),
    

3. 补充ROS2包必需的配置

ROS2包的data_files通常需要包含package.xml,完善配置如下:

data_files=[
    (os.path.join('share', package_name), ['package.xml']),
    (os.path.join('share', package_name, 'launch'), glob('launch/*.launch.py')),
]

4. 清理构建缓存

旧的构建缓存可能导致冲突,清理后重新编译:

rm -rf build install log
colcon build --packages-select python_parameters

5. 检查setuptools版本兼容性

ROS2 Humble对setuptools版本有要求,安装推荐的稳定版本:

pip install --upgrade setuptools==67.6.1

6. 获取详细错误日志

增加构建的 verbosity 以查看具体错误:

colcon build --packages-select python_parameters --event-handlers console_direct+

内容的提问来源于stack exchange,提问作者S.D.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:55:39