如何修复‘UserWarning: Distutils was imported before Setuptools’警告?
解决unique_id包构建失败的实操步骤
1. 搞定核心的setup.py命令无效问题
这是导致构建直接失败的根源,大概率是Setuptools版本过高和ROS Noetic不兼容——高版本Setuptools移除了distutils,和catkin的构建逻辑冲突。
降级Setuptools到ROS Noetic兼容版本:
pip3 install setuptools==57.5.0检查并修复unique_id的setup.py:
进入/home/scpark/cps_ws/src/unique_identifier/unique_id目录,打开setup.py,确保它是catkin Python包的标准结构,若内容异常直接替换为:from distutils.core import setup from catkin_pkg.python_setup import generate_distutils_setup d = generate_distutils_setup( packages=['unique_id'], package_dir={'': 'src'} ) setup(**d)
2. 消除CMake CMP0048警告
这个警告不影响构建,但可以通过两种方式消除:
- 修改源码:打开unique_id的CMakeLists.txt,在
project(unique_id)前添加:cmake_policy(SET CMP0048 NEW) - 构建时屏蔽警告:
catkin build unique_id -DCMAKE_WARN_DEPRECATED=OFF
3. 处理Distutils/Setuptools导入警告
完成Setuptools降级后该警告通常会自动消失,如果仍出现,构建前设置环境变量:
export SETUPTOOLS_USE_DISTUTILS=stdlib
4. 重新构建
清理缓存后重新执行构建:
catkin clean unique_id catkin build unique_id
内容的提问来源于stack exchange,提问作者bigbigpark
相关产品推荐
相关产品推荐

