无法让 VSCode/Python 调试器找到我的项目模块

Max*_*wer 14 python debugging visual-studio-debugging visual-studio-code

我有一个项目,正在尝试调试我的main.py. 我真的很困惑为什么我在运行调试器时从文件顶部的导入中(仅​​)收到以下错误:

Exception has occurred: ModuleNotFoundError
No module named 'bbb'
  File "/Users/maxepstein/myproject/bbb/train/__main__.py", line 8, in <module>
    from bbb.mysubfolder.myfile import myfunction
Run Code Online (Sandbox Code Playgroud)

我的项目文件夹结构,如这些打印语句所示(如调试器所示)确认我的“bbb”模块存在,并且有一个 __init__.py:

import os
print(os.getcwd())
print(os.listdir())
print(os.listdir('bbb'))

/Users/maxepstein/myproject
['requirements.txt', 'bbb', 'resources', '__init__.py', 'readme.md', 'results', '.gitignore', '.git', '.vscode', 'bbenv']
['config', 'tests', '__init__.py', 'utils', 'predict', 'train']
Run Code Online (Sandbox Code Playgroud)

我试图调试为“调试当前文件 - 集成终端”,下面是我的 debug settings.json 中适用的调试设置。在网上搜索后,我真的认为添加"cwd": "/Users/maxepstein/myproject"以下内容是我的解决方案,但没有帮助。

"version": "0.2.0",
"configurations": [
    {
        "name": "Python: Current File (Integrated Terminal)",
        "type": "python",
        "request": "launch",
        "program": "${file}",
        "console": "integratedTerminal",
        "cwd": "/Users/maxepstein/myproject"
    }
Run Code Online (Sandbox Code Playgroud)

pal*_*uke 19

就我而言,我很快就选择了正确的解释器来修复它: 
(解释器显示在左下角或右下角,具体取决于版本。)

(解释器显示在左下角或右下角,具体取决于版本。)

口译员选择

  • 惊人的!!拯救了我的一天。谢谢 (4认同)

Jam*_*orn 18

@BrettCannon 提到的错误的一个简单解决方法是将以下env条目添加到launch.json配置中:

{
    "version": "0.2.0",
    "configurations": [
        {
           "name": "Python: Current File",
           "type": "python",
           "request": "launch",
           "program": "${file}",
           "console": "integratedTerminal",
           "env": { "PYTHONPATH": "${workspaceRoot}"}
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

  • 我同意@AlexSham,我花了3个多小时来解决这个问题,这真是一场噩梦,包括将我的 **实际** python 路径放在那个位置,正如许多人建议的那样。只有上面的语法解决了这个问题。__对于其他有此问题的人__:你至少应该尝试这个解决方案,即使它看起来不太可能起作用。 (3认同)
  • `"env": { "PYTHONPATH": "${workspaceRoot}"}` 很好的解决方法! (2认同)
  • 我使用虚拟环境(.venv 文件夹)并在调试器中遇到“ModuleNotFound”错误。这解决了它。 (2认同)

epa*_*k96 8

当我在 VS Code 中调试 Python 模块时,我使用模块调试配置而不是当前文件配置。对你来说,它可能是这样的:

{
    "name" : "Python: Module",
    "type" : "python",
    "request": "launch",
    "module": "bbb",
    "args": []
}
Run Code Online (Sandbox Code Playgroud)

请参阅文档https://code.visualstudio.com/docs/python/debugging

此外,在 VS Code 中,这些步骤将为您自动填充这些设置:

调试 -> 添加配置 -> Python:模块

  • 这是不使用子包的 [已知错误](https://github.com/Microsoft/ptvsd/issues/1010)。 (3认同)

JBS*_*rro 8

从嵌套目录导入时遇到同样的问题,并通过附加到环境变量 PYTHONPATH 来修复它:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "cwd": "${workspaceFolder}",
            "env": {
                "PYTHONPATH":"${PYTHONPATH}:/home/maxepstein/myproject/"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)