如何将用户定义的 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.
来规避
我正在尝试创建一个具有以下结构的项目:
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.
来规避