模块未找到错误:没有名为'rospkg'的模块



我是ROS的新手,

我有一个问题,当我导入rospy到我的脚本文件example.py并运行它:它说:

Traceback (most recent call last):
File "/home/nagarjunv/hk_ws/src/rvo/src/example.py", line 4, in <module>
import rospy
File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/__init__.py", line 49, in <module>
from .client import spin, myargv, init_node, 
File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/client.py", line 52, in <module>
import roslib
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/__init__.py", line 50, in <module>
from roslib.launcher import load_manifest  # noqa: F401
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 42, in <module>
import rospkg
ModuleNotFoundError: No module named 'rospkg'

我将以下内容导入到我的脚本文件中:

#!/usr/bin/env python3
import sys
import rospy

这是我的cmakelist:

cmake_minimum_required(VERSION 3.0.2)
project(rvo)
find_package(catkin REQUIRED COMPONENTS
rospy
std_msgs
message_generation
)
generate_messages(
DEPENDENCIES
std_msgs
)
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES rvo
CATKIN_DEPENDS rospy std_msgs
#  DEPENDS system_lib
)
include_directories(
# include
${catkin_INCLUDE_DIRS}
)

这是我的包xml:

<buildtool_depend>catkin</buildtool_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_depend>message_generation</build_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<build_export_depend>message_generation</build_export_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
<exec_depend>message_runtime</exec_depend>

我在CMakelists和Package XML 'rospy'中指定并导入它。我还检查了我的ros是否有可用的rospy包。但是,我不明白为什么我有麻烦运行我的脚本文件?

rosrun rvo example.py 

我很乐意提供更多关于这个错误的细节。有谁能告诉我这个问题的解决方法吗?

尝试根据您的ROS发行版使用的python版本更改shebang(第1行)。

对于旋律或更早的:#!/usr/bin/env python2

noetic或更高级别:#!/usr/bin/env python3

根据您的ROS版本和rospkg版本,您可能需要坚持使用python 2。X或3.x.

你的脚本正在调用python3解释器

# !/usr/bin/envpython3

但是你可以在错误日志中清楚地看到你的安装使用了不同的版本:

文件"/opt/ros旋律/lib/python2.7/dist-packages rospy/init.py"第49行从.client导入spin, myargv, init_node,

如果你想用Python 3安装一个基于Python 2.7的ROS,你需要从头开始构建所有的东西,但即使这样,成功的机会也相当渺茫。

以下是一些可能的解决方案:

  • 如果你想使用Python 3,请看这里。根据本文,ROS Noetic仅针对Python 3。
  • 如果你不想升级,你需要坚持使用Python 2.7。
  • 如果Python的版本无关紧要,只需调整脚本以使用ROS安装所依赖的版本。