ModuleNotFoundError:没有名为...的模块 Jupyter Notebooks

MKA*_*NET 10 python visual-studio-code jupyter-notebook

dev是我的根目录。我有以下文件。

dev\sitehealthcheck\test.py
dev\sitehealthcheck\draw.py
Run Code Online (Sandbox Code Playgroud)

test.py中,第一行内容如下:

from sitehealthcheck.draw import *
Run Code Online (Sandbox Code Playgroud)

如果我在 VSCode 终端中运行test.py ,一切都会按预期运行。但是,当我尝试在交互式窗口中执行test.py时,Jupyter 返回:

ModuleNotFoundError:没有名为“sitehealthcheck”的模块

我该怎么做才能让 VSCode 自动在与我正在执行的文件相同的目录中搜索模块?

我更愿意只输入以下行..并且让 VSCode 编辑器/Intellisense 和 Jupyter 自动搜索与我正在执行的文件相同的目录中的模块。

from draw import *
Run Code Online (Sandbox Code Playgroud)

Fel*_*ipe 13

为了支持现有答案,当在子文件夹中使用笔记本和同级文件夹中的模块时,您需要将该行添加jupyter.notebookFileRoot到工作区中的文件中:settings.json

.vscode/settings.json

{
    "python.pythonPath": "env/bin/python",
    "jupyter.notebookFileRoot": "${workspaceFolder}"
}
Run Code Online (Sandbox Code Playgroud)


Ian*_*uff 2

对于交互式窗口,当前工作目录未设置为正在执行的文件的路径,而是设置为您在 VSCode 中打开的工作区文件夹的路径。如果我有以下情况:

WorkspaceFolder:
    SubFolder:
      MyScript.py
      ImportMe.py
Run Code Online (Sandbox Code Playgroud)

如果你MyScript.py在终端中运行,你会想要这样:

from importme import * since the file location is added to the path
Run Code Online (Sandbox Code Playgroud)

但如果您使用交互式窗口,您可以PythonPath按照上面的建议添加到您的窗口中。或者你可以使用这个:

from SubFolder.importme import *
Run Code Online (Sandbox Code Playgroud)

由于 CWD 设置为交互窗口会话的工作区根目录。