如何在使用Python2的虚拟环境中导入rospy、std_msgs等ROS系统包
问题核心原因
终端能正常导入ROS包是因为你打开终端时默认加载了ROS的环境变量,Python的sys.path包含了ROS相关包的存储路径;而虚拟环境、Pycharm默认没有加载对应环境变量,也没有继承系统的Python包路径,导致找不到ROS依赖。
解决步骤
1. 重建带系统包继承权限的Python虚拟环境
你之前创建的虚拟环境默认隔离了系统级Python包,需要重新创建时加入继承参数:
# 进入你的工作空间目录,删除旧的虚拟环境 cd ~/drone rm -rf venv # 新建带系统包继承的Python2.7虚拟环境 python2.7 -m venv --system-site-packages venv
2. 配置虚拟环境激活时自动加载ROS环境变量
修改虚拟环境的激活脚本,避免每次手动source配置:
打开venv/bin/activate文件,在文件末尾加入以下两行(注意替换为你自己的工作空间实际路径):
source /opt/ros/melodic/setup.bash source ~/drone/devel/setup.bash
配置完成后执行source venv/bin/activate激活虚拟环境,此时在虚拟环境中执行Python导入操作即可正常识别ROS包。
3. Pycharm适配配置
Pycharm默认不会继承系统终端的环境变量,可二选一配置:
- 方法一(更简单):每次从已经激活虚拟环境的终端中启动Pycharm,Pycharm会自动继承终端的所有环境变量:
cd ~/drone source venv/bin/activate # 替换为你自己的Pycharm安装路径下的启动脚本路径 sh ~/pycharm-professional/bin/pycharm.sh - 方法二(固定配置):在Pycharm中手动添加ROS包路径:
- 打开
文件>设置>项目:drone>Python解释器,点击解释器右侧的齿轮图标,选择显示所有 - 选中你配置的
drone/venv/bin/python解释器,点击右侧的显示解释器路径图标 - 点击加号添加两个路径:
/opt/ros/melodic/lib/python2.7/dist-packages、/home/你的用户名/drone/devel/lib/python2.7/dist-packages - 保存配置后重启Pycharm即可识别ROS包
- 打开
内容的提问来源于stack exchange,提问作者NotALolicon
相关产品推荐
相关产品推荐

