错误发生在学习ros2文档Client libraries,Writting a simple publisher and subscriber(C++)-4.build and run时。
错误显示:问题分析:
该错误发生在 ROS2 构建系统尝试解析 package.xml
文件时(通过脚本 /opt/ros/jazzy/share/ament_cmake_core/cmake/core/package_xml_2_cmake.py
)。原因是您的 Miniconda Python 环境覆盖了系统 Python 路径,导致 ROS2 使用了 Conda 的 Python(缺少 ROS 相关依赖),而非系统 Python。
解决方案:
在终端输入命令:
# 禁止 Conda 自动激活
conda config --set auto_activate_base false
打开.bashrc文件,在conda环境变量后,ros2环境变量前,增加
export PATH=/usr/bin:$PATH #优先使用系统 Python
重新打开终端
source ~/.bashrc
# 确认 Python 路径
which python3 # 应显示 /usr/bin/python3
# 检查 catkin_pkg
python3 -c "import catkin_pkg" # 不应报错
# 检查 ROS 环境
printenv | grep ROS # 应显示 ROS 相关变量
cd ~/ros2_ws
rm -rf build install log # 完全删除旧构建
colcon build --packages-select cpp_pubsub # 重新构建
成功构建