Sublime Text 配置 ROS 开发环境

本文介绍了在Linux系统下,由于ROS环境变量未正确导入SublimeText导致的Python和C++库找不到问题,以及两种解决方法。解决方式一是通过命令行启动SublimeText以获取终端环境;解决方式二是直接修改SublimeText配置文件,添加ROS的PYTHONPATH和LD_LIBRARY_PATH。同时提供了修改Python.sublime-build文件的示例。
摘要由CSDN通过智能技术生成

背景知识

  • Linux 系统下当前用户在打开一个终端的时候,默认调用~/.bashrc脚本来初始化,ROS 即是在该脚本最后添加一行命令来加入初始化配置
  • ROS 添加的这一行命令,作用是运行/opt/ros/{ROS_VERSION}/目录下的setup.bash脚本,在该脚本(及该脚本对其它脚本的调用)中添加了多项环境变量
  • 在终端中输入env命令可以查看当前终端的所有环境变量
  • source xx命令:在当前 shell 环境下从指定文件读取和执行命令
  • export xx=yy命令:设置 shell 变量,即环境变量,仅在当前终端有效

问题常见形式

  • 由于缺失 Python 包地址导致找不到 rospy:
    ModuleNotFoundError: No module named 'rospy'
    
  • 由于缺失 C++ 库地址导致找不到 libroscpp.so:
    OSError: cannot load library 'xxx/yyy.so': libroscpp.so: cannot open shared object file: No such file or directory.
    

等等。

这些问题都是因为 ROS 的环境变量没有被成功导入 Sublime Text,进而找不到对应的包或库文件。以下为两种解决方案。

解决方式一

Sublime Text 在每次打开的时候,会从系统中载入当前的环境变量并在内部缓存。在这里,不同的打开方式会造成不同的结果:

  • 如果通过直接点击图标的方式打开,则无法读取用户 shell 环境下的环境变量

  • 在终端用命令行的方式打开,则可以读取到该终端下当前用户的环境变量

    subl [path or dir]
    

因此,如果要在 Sublime Text 中加载 ROS 的环境变量,用命令行的方式输入subl打开软件即可。

解决方式二

还可以手动修改 Sublime Text 的配置文件,显式添加需要的环境变量,这样无论哪种打开方式都可以读取到所需的环境变量。

在 Linux 系统下,Sublime Text 的配置文件保存在以下两个目录:

  • ~/.config/sublime-text(用户配置)
  • /opt/sublime_text(系统配置)

在第二个系统配置目录下,找到./Packages/Python.sublime-package,这是一个 zip 压缩包。修改压缩包里面的Python.sublime-build文件,在env一项中添加如下两行:

"env": {
		"PYTHONIOENCODING": "utf-8",
		"PYTHONPATH": "/opt/ros/melodic/lib/python2.7/dist-packages", // ROS Python 相关包所在目录
		"LD_LIBRARY_PATH": "/opt/ros/melodic/lib",  // 运行程序时的链接库文件在此
	},

NOTE1: 上面是 Python 环境的配置文件,配置C++文件应该是同理的,因为暂时不需要所以未尝试。

NOTE2: Ubuntu 在图形界面下双击打开压缩包,编辑修改其中内容后可以直接更新,但是在/opt/目录下可能会因为权限问题更新失败,注意先添加写入权限再修改。

参考

Environment Variables - Sublime Forum
Python path and $PYTHONPATH - Sublime Forum
在sublime-text3和pycharm无法import-rospy等ros-Python库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值