【发布时间】:2020-04-08 09:39:19
【问题描述】:
在同一个项目目录中,我有一个文件 solution.ipynb 和另一个名为 model.py 的文件。在文件 solution.ipynb 中,我必须导入模块 model.py。
虽然这两个文件都在同一个目录中,当我使用下面的代码时:
import import_ipynb
import model
我仍然收到错误:ModuleNotFoundError: No module named 'model'
请注意:我正在使用 VSCode 打开和写入 .ipynb 文件。奇怪的是,当我用 Jupyter lab 打开 .ipynb 文件时,模块 model.py 可以毫无问题地导入。
我已经尝试过:(1) 安装 import-ipynb 并在上面引用它(如代码的第一行所示)和 (2) 添加一个 __init__.py 文件在 .ipynb 所在的目录中。
【问题讨论】:
-
我是这个扩展的开发者。我对这里发生的事情的猜测是 VS Code 使用了与 Jupyter 不同的默认根目录。 Jupyter 默认会在 ipynb 文件的位置旁边查看,但 VS Code 会查看当前打开的工作区的根目录。如果您的 .ipynb 与工作空间根目录不在同一位置,这将导致找到 .py 文件。你是这种情况吗?如果是这样,将 VS Code 中的“python.dataScience.notebookFileRoot”设置更改为“${fileDirName}”可能对您有用,因为它将工作目录设置为相对于打开的 ipynb 文件。
-
没错。只有当我在 VSCode 工作区中同时打开两个以上的项目时,才会出现问题。但是,在 settting.json 中插入相对路径并不能解决问题。 VSCode 仍在从我工作区顶部的项目中获取工作目录。
-
我实际上刚刚意识到我输入了错误的变量。是 ${fileDirname} 而不是 ${fileDirName} 那样可以吗?
-
我都使用了,但不幸的是它们并没有解决问题。工作目录仍被引用到另一个项目(我的 VSCode 工作区顶部的项目)。我尝试使用命令“os.chdir('path')”更改 file.ipynb 内的工作目录,虽然它确实更改了工作目录,但当我尝试导入 file.py 时,我再次收到 ModuleNotFoundError .
标签: python visual-studio-code jupyter-notebook