【问题标题】:VSCode Python Debugger FileNotFoundErrorVSCode Python 调试器 FileNotFoundError
【发布时间】:2019-03-25 11:19:21
【问题描述】:

让我们像这样定义一个简单的文件夹结构:

project
+---code
|       main.py
|
\---data
        foo.txt

main.py:

foo_path = "./../data/foo.txt"

with open(foo_path) as f:
    s = f.read()
    print(s)

这段代码在使用python main.py命令正常运行时运行良好,但在使用VSCode Python Debugger调试时抛出以下错误。

Exception has occurred: FileNotFoundError
[Errno 2] No such file or directory: './../data/foo.txt'
  File "C:\Users\user\Workspaces\project\code\main.py", line 3, in <module>
    with open(foo_path) as f:

我在 Windows 10 中使用带有 Python 3.7.1 Anaconda 版本的 VSCode。我知道文件路径类似于 Linux 路径,但它在正常运行时工作。我在the GitHub repo of Python VSCode Extension 中找不到任何未解决的问题。这是一个常见错误,还是我做错了什么?

另外,如果我定义foo_path = ".\\..\\data\\foo.txt",它的行为与前一个相同。运行正常,调试时报同样的错误。

如何在不使用 os.path 等额外包或使用完整文件路径的情况下解决此问题?

编辑:我在 Ubuntu 18.04 中尝试过,它的行为相同。

【问题讨论】:

    标签: python debugging visual-studio-code


    【解决方案1】:

    没错。我遇到了同样的问题,这就是我解决问题的方法

    在内置终端上,在 vscode 内部:

    • 将目录更改为您的代码所在的位置。例如:
    cd /path_to_your_code_dir/
    

    就我而言,它是:

    cd /repos/
    

    因为我的代码在这里 -> ~/repos/main.py

    • 然后再次运行 VSCode Python 调试器

    .
    (已编辑)

    我找到了这个错误的原因以及修复它的更好方法

    发生错误是因为python调试器从当前打开的文件夹执行终端中的文件(默认)
    但是您可以更改此行为,以在文​​件目录中使用执行:

    • 进入vscode设置(或使用快捷键:ctrl+comma
    • 然后在设置中搜索这个@ext:ms-python.python execute
    • 您会看到设置“在文件目录中执行”
    • 然后选中复选框,在文件目录而不是当前打开的文件夹中执行代码
    • 返回您的代码并重新运行(即单击调试器运行按钮)

    当您知道文件位于正确的位置并且指向正确的方向时,这将消除 FileNotFoundError。

    【讨论】:

      【解决方案2】:

      您可以使用cwd option in your debug configuration,但我建议您不要硬编码路径并使用pathlibos.path 指定相对于__file__ 位置的文件(我是不太清楚为什么要避免使用这些模块)。

      【讨论】:

      • 这并不是要避免这些模块。我想,正常运行和调试应该是一样的,我只是不想要包括 os.pathpathlib 在内的答案。但是cwd 选项是有意义的。它的默认值为${workspaceFolder}。如果foo_path = "data/foo.txt",它可以工作。或者,我可以按照您的建议更改cwd。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2021-01-07
      • 1970-01-01
      • 2020-02-24
      • 1970-01-01
      • 2018-12-02
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多