编译功能包报错
-
报错代码:
root@ubuntu:~/fx_cz_ws# source /opt/ros/humble/setup.bash root@ubuntu:~/fx_cz_ws# colcon build Starting >>> micro_ros_msgs Starting >>> robot_interfaces --- stderr: micro_ros_msgs Traceback (most recent call last): File "/root/fx_cz_ws/build/micro_ros_msgs/ament_cmake_python/micro_ros_msgs/setup.py", line 4, in <module> setup( File "/usr/local/lib/python3.10/dist-packages/setuptools/__init__.py", line 117, in setup return distutils.core.setup(**attrs) File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/core.py", line 186, in setup return run_commands(dist) File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/core.py", line 202, in run_commands dist.run_commands() File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 983, in run_commands self.run_command(cmd) File "/usr/local/lib/python3.10/dist-packages/setuptools/dist.py", line 993, in run_command super().run_command(command) File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 1002, in run_command cmd_obj.run() File "/usr/local/lib/python3.10/dist-packages/setuptools/command/egg_info.py", line 312, in run self.find_sources() File "/usr/local/lib/python3.10/dist-packages/setuptools/command/egg_info.py", line 320, in find_sources mm.run() File "/usr/local/lib/python3.10/dist-packages/setuptools/command/egg_info.py", line 548, in run self.prune_file_list() File "/usr/local/lib/python3.10/dist-packages/setuptools/command/sdist.py", line 162, in prune_file_list super().prune_file_list() File "/usr/local/lib/python3.10/dist-packages/setuptools/_distutils/command/sdist.py", line 380, in prune_file_list base_dir = self.distribution.get_fullname() File "/usr/local/lib/python3.10/dist-packages/setuptools/_core_metadata.py", line 267, in get_fullname return _distribution_fullname(self.get_name(), self.get_version()) File "/usr/local/lib/python3.10/dist-packages/setuptools/_core_metadata.py", line 285, in _distribution_fullname canonicalize_version(version, strip_trailing_zero=False), TypeError: canonicalize_version() got an unexpected keyword argument 'strip_trailing_zero' gmake[2]: *** [CMakeFiles/ament_cmake_python_build_micro_ros_msgs_egg.dir/build.make:70:CMakeFiles/ament_cmake_python_build_micro_ros_msgs_egg] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:447:CMakeFiles/ament_cmake_python_build_micro_ros_msgs_egg.dir/all] 错误 2 gmake[1]: *** 正在等待未完成的任务.... gmake: *** [Makefile:146:all] 错误 2 --- Failed <<< micro_ros_msgs [20.0s, exited with code 2] Aborted <<< robot_interfaces [20.8s] Summary: 0 packages finished [22.0s] 1 package failed: micro_ros_msgs 1 package aborted: robot_interfaces 2 packages had stderr output: micro_ros_msgs robot_interfaces 1 package not processed
-
这个错误是由于在构建
micro_ros_msgs
包时,setuptools
库的某个版本与ament_cmake_python
插件之间的不兼容导致的。错误信息显示canonicalize_version()
函数调用时遇到了一个意外的关键字参数strip_trailing_zero
。这种问题通常发生在依赖库版本更新后,而某些代码尚未更新以适应这些变化。以下是一些可能的解决步骤:
-
检查
setuptools
版本:
setuptools
的某些版本可能引入了不兼容的更改。你可以尝试降级setuptools
到一个较旧的版本,看看是否能解决问题。使用以下命令来查看当前安装的版本并尝试降级:pip show setuptools pip install setuptools==<older-version>
你可以尝试安装一个已知的、与你的项目兼容的版本,比如
setuptools==58.0.4
(版本号需要根据实际情况调整)。 -
更新
ament_cmake_python
:
如果可能,尝试更新ament_cmake_python
到最新版本,看看是否已经修复了这个问题。这可能需要更新整个 ROS 2 环境或相关的构建工具。 -
检查 ROS 2 和相关依赖的版本兼容性:
确保你安装的 ROS 2 版本(这里是 Humble)与所有依赖包兼容。有时候,新版本的 ROS 2 可能需要更新其他依赖包。 -
清理构建环境:
在尝试上述步骤之前,最好清理你的构建环境:cd ~/fx_cz_ws rm -rf build install log colcon build --packages-up-to micro_ros_msgs
这有助于确保没有旧的构建文件干扰新的构建过程。
-
查看官方文档和社区:
查看 ROS 2 的官方文档和社区论坛,看看是否有其他人遇到并解决了类似的问题。 -
使用 Docker 或其他容器技术:
如果问题持续存在,考虑使用 Docker 或其他容器技术来运行一个已知工作良好的环境。
通过上述步骤,你应该能够定位并解决构建过程中遇到的问题。如果问题仍然存在,可能需要更详细地检查
micro_ros_msgs
包的源代码或寻求来自 ROS 2 社区的帮助。
以上为生成回答,仅供参考~
-