Jupyter Notebook跨文件导入类失败,报ModuleNotFoundError求助
问题:Jupyter Notebook间导入类提示ModuleNotFoundError
我有一个名为rentalcar.ipynb的文件,其中包含一个名为rentalcar的类。尝试在另一个文件customer.ipynb中导入该类时,出现如下错误:
--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) Cell In[1], line 2 1 from datetime import datetime ----> 2 from rentalcar import rentalcar 4 class Customer: 5 def __init__(self, name, rental_company): ModuleNotFoundError: No module named 'rentalcar'
请问有什么解决方法?或者是否需要转为.py文件在Python shell中运行才能正常执行?
解决方法
不需要必须转成.py文件在Python Shell运行,以下几种方案可解决Notebook间的导入问题:
方法1:使用
import_ipynb库直接导入Notebook- 先安装依赖库:在终端或Notebook单元格中执行
pip install import-ipynb - 修改
customer.ipynb中的导入代码:from datetime import datetime import import_ipynb from rentalcar import rentalcar
注意两个Notebook文件需处于同一目录下。
- 先安装依赖库:在终端或Notebook单元格中执行
方法2:将Notebook转为
.py文件
手动转换:打开rentalcar.ipynb,点击菜单栏「File」→「Download as」→「Python (.py)」,生成rentalcar.py文件后放在customer.ipynb同目录下,即可正常使用原导入语句。
命令行自动转换:执行以下命令生成对应的.py文件jupyter nbconvert --to python rentalcar.ipynb方法3:添加当前目录到Python模块搜索路径
在customer.ipynb的导入代码前添加以下内容,将当前Notebook所在目录加入Python的搜索路径:import sys from pathlib import Path sys.path.append(str(Path().absolute())) from datetime import datetime from rentalcar import rentalcar该方案无需额外安装库,适合临时场景使用。
内容的提问来源于stack exchange,提问作者Nadin Martini
相关产品推荐
相关产品推荐

