当我更改代码时,ipython笔记本没有更新

当我更改代码时,ipython笔记本没有更新,ipython,ipython-notebook,jupyter,jupyter-notebook,Ipython,Ipython Notebook,Jupyter,Jupyter Notebook,所以,我在使用ipython笔记本时遇到了一个奇怪的问题,不知道该怎么办。通常,当我运行代码的一部分时,如果有错误,我会追溯到它,修复它,然后重新运行代码。我也在做类似的事情,但即使在对代码进行了更改之后,看起来还是没有任何变化 下面是一个例子。。。我使用的是Python3.5,所以xrange已经不存在了。这会导致抛出一个错误: XXXX 24 XXXX 25 XXXX ---> 26 for t in xrange(0,len(data),1

所以,我在使用ipython笔记本时遇到了一个奇怪的问题,不知道该怎么办。通常,当我运行代码的一部分时,如果有错误,我会追溯到它,修复它,然后重新运行代码。我也在做类似的事情,但即使在对代码进行了更改之后,看起来还是没有任何变化

下面是一个例子。。。我使用的是Python3.5,所以xrange已经不存在了。这会导致抛出一个错误:

XXXX
     24     XXXX
     25     XXXX
---> 26     for t in xrange(0,len(data),1):
     27 
     28         XXXX

     NameError: name 'xrange' is not defined
但是在更改我的代码后(您可以在第26行的差异下面看到),会弹出相同的错误

XXXX
     24     XXXX
     25     XXXX
---> 26     for t in range(0,len(data),1):
     27 
     28     XXX

     NameError: name 'xrange' is not defined

你知道为什么会发生这种情况吗?

如前所述,你可能正在更改一个未导入的外部文件。ipython笔记本中有一个非常有用的命令,用于此类情况,称为autoreaload。通过自动重新加载,无论何时修改外部文件,都不必再次导入它,因为扩展名会为您处理它。有关更多信息,请查看:。

我有时也会遇到同样的问题。我认为这与内存有关——如果我有一堆数据帧挂在周围,它似乎会引起问题。如果我使用kernel>restart选项重新启动内核,问题就会消失。

我有时也会遇到同样的问题。我重新启动了内核,但它没有工作。我尝试运行两到三次计算单元(ctr+enter)。然后根据更新的代码显示结果。我希望这能有所帮助。

对我来说,这是由于以下原因之一:

  • 原因1:导入的模块未更新
解决方案:

import importlib
importlib.reload(your_module)
  • 原因2:其他
解决方案:重新启动内核,对于jupyter笔记本电脑,这就是如何

无论何时与Ipython一起使用外部文件,都会使用autoreload。每次在IPython中执行任何代码之前,它都会重新加载外部文件

将此添加到IPython的第一个单元格

%load_ext autoreload
%autoreload 2

你能和我共用一个房间吗?从您的错误描述很难猜出发生了什么。我猜您正在更改已导入的外部文件。导入的文件不会自动重新加载。您可以使用
importlib.reload(mymodule)
显式重新加载它。这特别吸引了那些习惯Matlab的人,所以IPython有一个软件,当导入的模块发生变化时,它会自动重新加载。啊!谢谢@ThomasK,这一切终于成功了!:)只是更新导入文件的问题。谢谢我也有同样的问题!如果是内存问题,您也可以执行%reset或垃圾回收。我使用的是
%autoreload
方法不起作用,但使用
importlib
确实起作用。谢谢