如何将用户定义的 class 从包导入到 Jupyter Notebook

How to import a user defined class from a Package to a Jupyter Notebook

我正在尝试创建一个具有以下结构的项目:

my_file.ipynb
my_package_directory > __init__.py test.py

test.py 中可以说我有一个非常简单的 class:

class Test:
    def __init__(self, name):
        self.name = name

在一个代码单元格中,我尝试填充 class 并打印出定义的变量:

from my_package_directory.test import Test
test = Test('bob')
print(test.name)

如果我尝试 运行 我得到一个错误的单元格:

ImportError: cannot import name 'Test' from 'my_package_directory.test'

有没有特定的方法可以在 Jupyter notebook 中执行此操作?

谢谢。

可能您文件的根目录不在 python module search path 中。 您可以使用以下命令检查您的模块搜索路径:

import sys
print(sys.path)

如果您将笔记本和包的位置附加到该路径,它应该是可导入的:

sys.path.append('/path/to/where/jupyter/notebook/resides')
from my_package_directory.test import Test # should work

请注意,每当您更改模块的实现时都必须重新启动内核 - 这可以通过一些 jupyter notebook magic.

来规避