Jupyter Notebook导入自定义模块及解决TypeError错误的方法
本文介绍在Jupyter Notebook中导入自定义模块的两种方法:同目录直接导入和跨目录通过sys.path导入。同时针对导入后出现的TypeError错误,分析其原因为模块修改后未刷新内核,并提供保存并重启内核的解决方案。
在Jupyter Notebook中导入自定义模块的方法
1. 相同目录下的导入方法
假设当前目录结构如下:
A a.ipynb b.ipynb
现在需要在b.ipynb中导入a.ipynb定义的函数和类。
具体导入步骤如下:
首先将a.ipynb下载为a.py文件(下载方法见下图),并将其放置在与b.ipynb相同的目录下。
此时文件目录结构变为:
A a.py a.ipynb b.ipynb
注意:下载路径取决于浏览器设置,需手动将下载好的文件移动到目标目录。

此时可以在b.ipynb中直接使用以下代码导入a.py文件:
import a其他导入规则与普通.py文件的导入方式相同。
另一种直接导入.ipynb的方法
2. 不同目录下的导入方法
如果要导入的a.ipynb文件与执行文件b.ipynb不在同一目录下,
即当前文件目录为:
A a.ipynb
B b.ipynb
同样,先将a.ipynb下载为a.py文件,此时文件路径变为:
A a.py a.ipynb
B b.ipynb
此时导入a.py的方法为:
在b.ipynb中先加载a.py所在的目录(即目录A),这里使用相对路径:
import sys
sys.path.insert(0, "./../A/")
此时即可正常导入a.py文件。
import aTypeError错误解决办法
注:此处特指导入模块后出现的报错,与其他情况下的TypeError不同。

首先确认函数形参和实参的数量及类型是否对应。如果对应无误,解决方法为:
保存当前.ipynb文件,然后在Running中关闭该文件,重新打开并运行。
错误说明:
该错误通常由以下原因引起:被导入模块的代码被修改,例如被导入模块(即.py文件)中的某个函数原本没有形参。
此时已执行import该模块,然后执行后发现该模块中的某个函数需要一个形参,于是去.py文件中加入形参并保存。
此时再去Jupyter执行该函数,明明形参和实参数量、类型等均对应,但仍会报TypeError错误。
此时并非代码错误,而是Jupyter本身的机制问题,即无法实时更新已加载的模块内容。按照加粗红体字的解决办法即可解决。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













