问题描述
我是 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
这是我的 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 安装所依赖的脚本即可。