• VScode在服务器上远程调试python代码的工作目录问题


    背景:
    当前很多写代码都习惯使用相对路径,即以当前的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())
    
    • 1
    • 2

    就可以查询到当前python的工作目录。

    二.vscode调试模式的工作目录设定

    上面说了,直接运行*.py的话是可以正常运行的。所以说直接在调试模式下,去设定工作目录与正常运行的工作目录相同即可。

    example:下面举一个例子:

    我的工作目录如下,1是工作空间的根目录,我想要调试的是2处的train.py文件:
    在这里插入图片描述
    在运行train.py文件的情况下,我使用了上面的命令分别查询了调试模式和正常模式运行的工作目录。
    正常模式
    在这里插入图片描述调试模式
    在这里插入图片描述
    也即调试模式的python工作目录比直接运行train.py的工作目录少了一个*/ThreeDMatch,添加上即可。如何添加?
    在launch.json文件中加入以下一行即可。
    在这里插入图片描述

  • 相关阅读:
    【实战系列】OpenApi设计规范
    【Matlab】常用函数汇总(一)
    vue2旧项目迁移到vite开发,提升编译效率
    二叉搜索树的最近公共祖先
    kubernetes 起几个节点,就会有几个flannel pod
    Python第四章 序列
    05 【nodejs内置模块(上)】
    (done) 什么是词嵌入技术?word embedding ?(这里没有介绍词嵌入算法)(没有提到嵌入矩阵如何得到)
    智慧公厕高精尖技术揭秘,让卫生管理更智能、更舒适
    Windows与网络基础-4-安装GNS3软件环境
  • 原文地址:https://blog.csdn.net/qq_42537872/article/details/132841947