【问题标题】:ModuleNotFoundError: No module named... Jupyter NotebooksModuleNotFoundError: No module named... Jupyter Notebooks
【发布时间】:2019-08-09 02:44:44
【问题描述】:

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 *

【问题讨论】:

  • 如果您将.../dev/sitehealthcheck 添加到您的PYTHONPATH,那么您可以import draw
  • 谢谢。你回答了我的问题。不过,我无法选择您的评论作为此 stackoverflow 问题的官方答案。

标签: python visual-studio-code jupyter-notebook


【解决方案1】:

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

.vscode/settings.json:

{
    "python.pythonPath": "env/bin/python",
    "jupyter.notebookFileRoot": "${workspaceFolder}"
}

【讨论】:

    【解决方案2】:

    要解决此问题,您可以在 Python 扩展中搜索名为“Python › Data Science: Notebook File Root”的设置。此设置标题下方的行说:“为 Python 交互窗口设置加载文件的根目录。”。然后将 ${workspaceFolder} 更改为 ${fileDirname},关闭交互式 Python 终端并重新启动它,它应该可以工作了。

    【讨论】:

    • 我不知道VS代码是否改变了默认值,但对我来说${fileDirname}是默认值,我需要设置${workspaceFolder}
    【解决方案3】:

    对于交互式窗口,当前工作目录未设置为正在执行的文件的路径,而是设置为您在 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 设置为交互式窗口会话的工作区根目录。

    【讨论】:

      【解决方案4】:

      如果您将.../dev/sitehealthcheck 添加到您的PYTHONPATH,那么您可以import draw

      【讨论】:

        猜你喜欢
        • 2020-03-03
        • 2017-12-15
        • 2022-10-13
        • 2022-12-27
        • 2022-12-27
        • 2022-12-19
        • 2021-12-05
        • 1970-01-01
        • 2020-02-10
        相关资源
        最近更新 更多