ModuleNotFoundError: 没有名为“rospkg”的模块

如何解决ModuleNotFoundError: 没有名为“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'

我将以下内容导入到我的脚本文件中:第 4 行是 rospy

#!/usr/bin/env python3

import sys
import rospy

这是我的 CmakeLists:

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 版本和相应的 rospkg 版本,您可能需要坚持使用 python 2.x 或 3.x。

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

#!/usr/bin/env python3

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

文件“/opt/ros/melodic/lib/python2.7/dist-packages/rospy/init.py”, 第 49 行,在 from .client import spin,myargv,init_node,\

如果您想将 Python 3 用于基于 Python 2.7 的 ROS 安装,您需要从头开始构建所有内容,但即便如此,成功的机会也非常渺茫。

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

  • 如果您想使用 Python 3,请参阅 here。根据这篇文章,ROS Noetic 仅针对 Python 3。
  • 如果您不想升级,则需要坚持使用 Python 2.7。
  • 如果 Python 的版本无关紧要,只需调整脚本以使用 ROS 安装所依赖的脚本即可。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?