问题ros: no module named ‘rclpy‘

项目场景:

工作站上同时存在ros1和ros2.
ros1是基于noetic版本,ros2是基于galactic版本。
因此需要经常切换版本。


问题描述

运行python脚本时总是提示:

no module named 'rclpy'

尝试方案一:安装rclpy。

pip install rclpy

甚至尝试换国内的各种源,甚至添加–trusted,都无效,统一提示:

ERROR: Could not find a version that satisfies the requirement rclpy (from versions: none)
ERROR: no matching distribution found for rclpy

原因分析:

原因巨搞笑。
因为没有source ros。。。

source /opt/ros/galactic/setup.bash

source之后,依然存在问题:

Traceback (most recent call last):
  File "./plotter.py", line 23, in <module>
    import rclpy
  File "/opt/ros/galactic/lib/python3.8/site-packages/rclpy/__init__.py", line 63
    *,
     ^
SyntaxError: invalid syntax

原因是,
python脚本用的是/usr/bin/python,python的默认版本是python2.
#!/usr/bin/python改为#!/usr/bin/python3即可。


解决方案:

两步:

  1. source ros
source /opt/ros/galactic/setup.bash
  1. 修改脚本的python版本
#!/usr/bin/python3

切记

无论发生了什么,先摸摸自己的胸口问问自己source了没有。

你可能感兴趣的:(ros,python)