我是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安装所依赖的版本。