dev 是我的根目录。我有以下文件。
dev\sitehealthcheck\test.py
dev\sitehealthcheck\draw.py
在 test.py 中,第一行显示为:
from sitehealthcheck.draw import *
如果我在VSCode终端中运行 test.py ,那么一切都会按预期进行。但是,当我尝试在交互式窗口中执行 test.py 时,Jupyter返回:
ModuleNotFoundError:没有名为“ sitehealthcheck”的模块
我该怎么做,VSCode会自动在与我正在执行的文件相同的目录中搜索模块?
我希望只键入以下行..,并让VSCode编辑器/ Intellisense和Jupyter在与我正在执行的文件相同的目录中自动搜索模块。
from draw import *
答案 0 :(得分:2)
为了支持现有答案,在子文件夹中使用笔记本和同级文件夹中的模块时,您需要将 jupyter.notebookFileRoot
行添加到工作区中的 settings.json
文件中:
.vscode/settings.json
:
{
"python.pythonPath": "env/bin/python",
"jupyter.notebookFileRoot": "${workspaceFolder}"
}
答案 1 :(得分:1)
对于交互式窗口,当前工作目录未设置为正在执行的文件的路径,而是设置为已在VSCode中打开的工作空间文件夹的路径。如果我有以下内容:
WorkspaceFolder:
SubFolder:
MyScript.py
ImportMe.py
如果您在终端中运行MyScript.py
,则需要这样做:
from importme import * since the file location is added to the path
但是,如果您正在使用交互式窗口,则可以按照上面的建议将其添加到PythonPath
中。或者您可以使用此:
from SubFolder.importme import *
由于CWD设置为Interactive Window会话的工作区根。
答案 2 :(得分:0)
如果将.../dev/sitehealthcheck
添加到PYTHONPATH
,则可以import draw
。
答案 3 :(得分:0)
要解决此问题,您可以在Python扩展名中搜索一个设置,该设置称为“ Python›数据科学:笔记本文件根”。此设置标题下的一行显示:“设置用于为Python Interactive窗口加载文件的根目录。”。然后,将$ {workspaceFolder}更改为$ {fileDirname},关闭交互式Python终端并重新启动,它应该可以工作。