Ubuntu22.04下ROS2 Python包colcon构建报错:找不到bdist_wininst模块
解决Ubuntu 22.04下ROS2 Python包colcon构建失败问题
问题分析
报错ModuleNotFoundError: No module named 'distutils.command.bdist_wininst'的核心原因是:bdist_wininst是Windows平台专属的distutils模块,Linux环境下默认不存在。高版本setuptools(60+)移除了对该模块的兼容处理,但colcon构建流程中的部分逻辑仍会尝试调用它,进而触发构建失败。
解决方案
方案1:降级setuptools到兼容版本
执行以下命令将setuptools降级到59.6.0版本(该版本仍保留对bdist_wininst的兼容逻辑):
pip3 install setuptools==59.6.0 --user
完成后重新执行构建命令:
colcon build --packages-select mypkgpython
方案2:检查并退出虚拟环境
如果当前激活了Python虚拟环境,可能导致系统distutils无法被正确调用。执行以下命令退出虚拟环境:
deactivate
之后重新运行colcon构建命令即可。
方案3:修改setup.py排除Windows相关构建选项
在你的Python包的setup.py中添加以下配置,明确跳过Windows平台的安装器构建:
from setuptools import setup setup( # 保留原有包配置信息 name='mypkgpython', version='0.0.0', packages=['mypkgpython'], # 添加以下选项 options={ 'bdist_wininst': {'skip_install': True} }, # 其他原有配置... )
保存文件后重新执行构建命令。
内容的提问来源于stack exchange,提问作者ma r
相关产品推荐
相关产品推荐

