当使用vscode的RUN AND DEBUG插件直接运行.py文件时,发现相对路径实效了,找不到相对路径!
这是因为vscode运行时把路径设置在了文件夹的根目录下.例如我打开的项目路径是/home/lidar_trajectory
,vscode运行代码时就把这个目录当作成当前目录,
而我运行的py文件位于/home/lidar_trajectory/scripts
目录下,相对路径都是相对这个目录的,当然就索引不到.
解决方法是使用os.chdir(sys.path[0])
把当前py文件所在路径设置为当前运行路径.
import os
import sys
print(f"vscode current run path is {os.getcwd()}")
os.chdir(sys.path[0])
print(f"set py path as current path ")
print(f"vscode current run path is {os.getcwd()}")
打印的信息为:
> vscode current run path is /home/lidar_trajectory
> set py path as current path
> vscode current run path is /home/lidar_trajectory/scripts
可见,vscode的当前运行目录已经改成了py文件所在的目录.就可以使用相对路径了.
os.chdir()函数是设置程序运行的工作目录,程序运行的工作目录变量可以通过os.getcwd()获取.拓展链接
sys.path[ ]函数返回一个列表,包含了与python解释器和它的环境有关的函数,为了让py文件在运行时检索到我们自己编译的rosmsg文件,就可以认为额外的向这个列表增加路径.
例如为编译的rosmsg文件都在/home/catkin_ws_xwyd/src
目录下,那么在编译msg之后,要想让py文件检索到msg文件,就需要在引用msg之前加入这个路径:
sys.path.append("/home/catkin_ws_xwyd/devel/lib/python3/dist-packages") # 添加解释器,以便检索到rosmsg地址