背景:
当前很多写代码都习惯使用相对路径,即以当前的py文件为工作目录去寻找其他的py文件。所以如果工作目录不是以当前的py文件为起始的话,这将导致去跑一些开源代码的时候运行不起来。
现在我遇到的问题就是,在远程服务器上,正常使用终端运行*.py文件,能正常运行。但是在使用vscode远程调试服务器*.py代码时,就会报错。
原因:
调试模式运行*.py与终端直接运行*.py的工作目录不同!
现象描述:在服务器的文件夹形式为:A/B.py、A/C/D.py文件。
1.现在我需要调试D.py文件,如果直接使用终端进入到D.py文件夹目录,使用python D.py运行它,可以正常运行。(注意:当前的工作空间就是python的工作目录。)
2.而如果我使用vscode的调试模式去运行D.py,由于代码中有很多的相对路径去找其他的py文件,所以现在跑不通了。(由于vscode本身的设定,工作目录默认为根目录(即A目录下),导致一些开源代码以D.py为定位写的相对位置代码跑不通。)
所以现在我需要修改调试模式的工作目录路径与正常运行的工作目录一致即可!
一.工作路径查询
在*.py文件运行着的时候,运行
import os
print(os.getcwd())
就可以查询到当前python的工作目录。
二.vscode调试模式的工作目录设定
上面说了,直接运行*.py的话是可以正常运行的。所以说直接在调试模式下,去设定工作目录与正常运行的工作目录相同即可。
example:下面举一个例子:
我的工作目录如下,1是工作空间的根目录,我想要调试的是2处的train.py文件:
在运行train.py文件的情况下,我使用了上面的命令分别查询了调试模式和正常模式运行的工作目录。
正常模式
调试模式
也即调试模式的python工作目录比直接运行train.py的工作目录少了一个*/ThreeDMatch,添加上即可。如何添加?
在launch.json文件中加入以下一行即可。