在 Jupyter Notebook 中导入期间找不到模块

新手上路,请多包涵

我有以下包(和工作目录):

 WorkingDirectory--
                 |--MyPackage--
                 |            |--__init__.py
                 |            |--module1.py
                 |            |--module2.py
                 |
                 |--notebook.ipynb

__init__.py 我有:

 import module1
import module2

如果我尝试将 MyPackage 导入我的笔记本:

 import MyPackage as mp

我会得到 ModuleNotFoundError: No module named 'module1' 。但如果我在笔记本外执行脚本,导入工作正常:如果我在同一目录中创建 test.py 并执行与在笔记本中相同的操作,导入将正常工作。如果我在 __init__.py ( import MyPackage.module1 ) 中使用完全限定名称,它将在笔记本中工作。

不同导入行为的原因是什么?

我已经确认笔记本的工作目录是 WorkingDirectory

- -更新 - - - - -

确切的错误是:

 C:\Users\Me\Documents\Working Directory\MyPackage__init__.py in <module>()
---> 17 import module1

ModuleNotFoundError: No module named 'module1'

我的问题与可能的重复问题不同:

  1. 笔记本能够找到包,但只能加载模块。这是通过将 module1 替换为 MyPackage.module1 推断出来的,效果很好,表明它可能不是与 PATH 相关的问题

  2. 我进入了 WorkingDirectory 并在那里启动了服务器。工作目录应该是包含我的包的文件夹。

原文由 Ryan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
1 个回答

我很确定这个问题是相关的,那里的答案会帮助你: https ://stackoverflow.com/a/15622021/7458681

tl; dr 笔记本服务器的 cwd 始终是您启动服务器的基本路径,无论正在运行 import os os.getcwd() 说。使用 import sys sys.path.append("/path/to/your/module/folder")

我用一些与你指定的结构相同的虚拟模块运行它,在修改之前 sys.path 它不会运行,之后它会

原文由 Louise Davies 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题