如何将系统包(即 rospy、std_msgs、geoemtry_msgs)导入使用 python2 的虚拟环境?

Posted

技术标签:

【中文标题】如何将系统包(即 rospy、std_msgs、geoemtry_msgs)导入使用 python2 的虚拟环境?【英文标题】:How can I import system packages (i.e. rospy, std_msgs, geoemtry_msgs) into my virtual environment that's using python2? 【发布时间】:2021-08-22 19:40:12 【问题描述】:

之前,我使用以下方式安装了 PX4 固件、ROS 和 Gazebo:

wget https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/ubuntu_sim_ros_melodic.sh
bash ubuntu_sim_ros_melodic.sh

我相信这两行安装了 ROS 和诸如此类所需的所有包,我只需要安装 python 2.7,因为我正在运行 ros-melodic。但是,我曾尝试安装 anaconda,然后尝试导入所需的包(rospy、std_msgs、geometry_msgs

首先我用catkin创建了一个ros工作区

mkdir -p drone/src
catkin_make
cd src
catkin_create_pkgs bigdrone std_msgs geometry_msgs rospy

我打开 Pycharm-Professional 并从drone/venv/bin/python 设置解释器。现在我尝试再次导入我的包,但它们都丢失了。我想可能是因为它是虚拟环境找不到包,所以我切换到/usr/bin/python2.7中的python。我需要的软件包仍然丢失,但我确实可以使用 rosdep 之类的软件包。另外当我只是在终端上运行时:

python
>>> import rospy
>>> import std_msgs
>>> import geometry_msgs

由于某种原因,一切似乎都运行良好。

【问题讨论】:

【参考方案1】:

它无法在 Pycharm 中找到这些包,但可以从您的终端中找到的原因是您在终端中运行了 source /opt/ros/melodic/setup.bash。该文件设置环境变量并将更新PYHTONPATH 以包含您提到的那些特定于ros 的模块。您可以通过从具有/opt/ sourced 文件的终端启动 Pycharm 来使其工作。

话虽如此,更完整的解决方案是将 ros distpackages 添加到您的虚拟环境中。您可以找到添加外部包的步骤here,您要添加的路径是/opt/ros/melodic/lib/python2.7/distpackages。之后,您可以转到文件 > 设置 > 项目:> 项目解释器。从那里您可以从列表中指定 ROS Python 解释器。

【讨论】:

以上是关于如何将系统包(即 rospy、std_msgs、geoemtry_msgs)导入使用 python2 的虚拟环境?的主要内容,如果未能解决你的问题,请参考以下文章

如何将系数值从逻辑回归中提取到 R 中的数据框中? [复制]

roscore 启动出现问题

如何使用win32diskimager-binary工具把ISO系统包刷到U盘

ROS进二阶学习笔记-- 关于rospy 和 parameters

ROS进二阶学习笔记-- 关于rospy 和 parameters

Python rospy模块代码示例