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.
相关产品推荐
相关产品推荐

