1.问题描述

当使用vscode的RUN AND DEBUG插件直接运行.py文件时,发现相对路径实效了,找不到相对路径!

2.问题原因

这是因为vscode运行时把路径设置在了文件夹的根目录下.例如我打开的项目路径是/home/lidar_trajectory,vscode运行代码时就把这个目录当作成当前目录,

而我运行的py文件位于/home/lidar_trajectory/scripts目录下,相对路径都是相对这个目录的,当然就索引不到.

3.解决方法

解决方法是使用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地址
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐