确保ipython笔记本与python脚本位于同一文件夹中。此外,您可能必须在python脚本所在的文件夹中创建一个空的__init__.py文件,才能使导入工作。
由于您可能会修改python脚本并直接在笔记本上进行测试,因此您可能会对autoreload插件感兴趣,该插件将使用您刚刚在python脚本中所做的更改自动更新导入的模块:%load_ext autoreload
%autoreload 2
注意,在调用autoreload插件之后,需要放置导入。
还请注意,在某些情况下,您可能需要将其添加到第一个单元格顶部的IPython笔记本中(在%magics之后):from __future__ import absolute_import
限制:autoreload通常可以很好地重新加载模块代码的任何部分,但也有一些例外,例如在新的类方法上:如果添加或更改方法的名称,则必须重新加载内核!否则,它将继续加载此方法的旧定义,或者在解析中失败(找不到方法),这在重载magic方法时可能特别令人困惑(因此在本例中,将调用默认magic方法而不是您的定义!)。然后,一旦定义了方法名并重新加载内核,就可以自由地修改此方法的代码,新代码将自动重新加载。
此外,如果在更改的类中使用super()调用,它将失败,如果发生这种情况,还必须重新加载内核。