运行.py文件时找不到相对路径的问题解决方法

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地址
posted @ 2022-12-29 18:42  X1OO  阅读(337)  评论(0)    收藏  举报