(20201024Solved)vsCode debug出现no such file or directory:‘/home/user/.local/lib‘

  • 问题描述

    python file.py可以正常运行,对其进行debug就出现如题问题:

    no such file or directory: '/home/user/.local/lib'
    

    看运行路径,应该是python在进行os路径检查.

  • 思路梳理

    • 关键字

    debug一个文件的实际内容之前,vscode会先进行检查,出问题的函数是:

    home/user/anaconda3/lib/python3.8/posixpath.py

    # This will always return false on systems where os.lstat doesn't exist
    def islink(path):
            # Test whether a path is a symbolic link
            try:
                st = os.lstat(path)
            except (OSError, ValueError, AttributeError):
            return False
        return stat.S_ISLNK(st.st_mode)
    

    OK,这里有几个关键字:[posixpath.py, os.lstat, islink, stat, path, symbolic]

    先看输入path和输出stat这两个变量内部是什么:

    • path就是home/user/.local/lib这个出问题的路径
    • stat<module 'stat' from 'home/user/anaconda3/lib/python3.8/stat.py'>

    那问题就转为研究关键字(stat.py, posixpath.py),这两个模块就是问题所在,可以看到statimport statposixpath.py中到,所以问题的突破口就是这个posixpath.py是干嘛的。

    理解posixpath.py in Python》里讲了,posixpath.py就是POSIX systemos.path这个常用moduleSource file

    • 软链接

    islink()函数适用于判断路径是否symbolic link,《理解什么是symbolic link in Python》。

    前面梳理了一大堆,问题的核心就是os.path moduleislink()函数判断path=/home/user/.local/lib是否是软连接时出错,因为没有/home/user/.local/lib这个路径。

    • vscode

    查看也确实没有,那这个路径是怎么来的。那就从vscode debug原理找突破。

    From Python debug configurations in Visual Studio Code, VS Code debug 会采用*.vscode/launch.json中的配置,那path=/home/user/.local/lib也多半是launch.json*指定的,先将其删除,重新debug,问题解决。

  • 解决方案

    删除*.vscode/launch.json*文件,重新F5 dubug,问题解决。

    launch.json 怎么设定path=/home/user/.local/lib参见Python debug configurations in Visual Studio Code, 后面空了再详解。

  • Reference

  1. Python debug configurations in Visual Studio Code
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页