我有以下包(和工作目录):
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'
我的问题与可能的重复问题不同:
笔记本能够找到包,但只能加载模块。这是通过用
MyPackage.module1
替换module1
推断出来的,效果很好,表明它可能不是与PATH
相关的问题。我进入
WorkingDirectory
并在那里启动了服务器。工作目录应该是包含我的包的文件夹。
最佳答案
我很确定这个问题是相关的,那里的答案会对你有帮助: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
之前它不会运行,之后它会运行
关于python - 在 Jupyter Notebook 中导入期间找不到模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43120112/