虚拟环境下ROS2 colcon build因Python依赖em报错ModuleNotFoundError
解决ROS2编译时找不到'em'模块的问题
问题根源
从报错日志可以看到,colcon构建时调用的是系统的Python 3.12(/opt/homebrew/Frameworks/Python.framework/Versions/3.12/bin/python3.12),但你安装的empy依赖在虚拟环境的Python 3.11路径下(/Users/mryall/src/mawson/ros2-iron/iron_venv/lib/python3.11/site-packages),版本不匹配导致模块找不到。
解决方案
确认虚拟环境激活状态
激活虚拟环境后,执行以下命令验证Python路径是否正确:which python输出需指向虚拟环境内的Python 3.11,比如
/Users/mryall/src/mawson/ros2-iron/iron_venv/bin/python。强制colcon使用虚拟环境的Python
构建时通过cmake-args指定Python解释器路径:colcon build --cmake-clean-cache --cmake-args -DPYTHON_EXECUTABLE=$(which python)设置PYTHONPATH环境变量
如果上述方法无效,直接将虚拟环境的site-packages路径添加到PYTHONPATH:export PYTHONPATH=/Users/mryall/src/mawson/ros2-iron/iron_venv/lib/python3.11/site-packages:$PYTHONPATH colcon build --cmake-clean-cache检查ROS2环境加载顺序
确保先激活虚拟环境,再加载ROS2的setup脚本:source /Users/mryall/src/mawson/ros2-iron/iron_venv/bin/activate source /Users/mryall/src/mawson/ros2-iron-build/install/setup.bash
内容的提问来源于stack exchange,提问作者Matt Ryall
相关产品推荐
相关产品推荐

