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

标签 python python-3.x jupyter-notebook python-import python-module

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

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. 笔记本能够找到包,但只能加载模块。这是通过用 MyPackage.module1 替换 module1 推断出来的,效果很好,表明它可能不是与 PATH 相关的问题。

  2. 我进入 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/

相关文章:

python - 将节点大小从 NetworkX 导出到 Gephi

Python 3.4 多线程和传递变量

python3用单反斜杠替换双反斜杠

python - 在 python re 中分隔字符串中的第一个单词

python - 使用可选关键字参数定义类的 __init__ 方法的更好方法是什么?

python - 文件关闭错误,[AttributeError : 'int' object has no attribute 'close' ] when reducing file write code to a single line

python - Tesseract 选项和图像预处理

python - jupyter笔记本可以找到自己的文件名吗?

python - 用于匹配 mRNA 序列的正则表达式

python - 使用 Seaborn 对象接口(interface)时如何对构面进行排序