IPython在QTConsole中运行时不会重新加载代码。

12 浏览
0 Comments

IPython在QTConsole中运行时不会重新加载代码。

我正在运行ipython qtconsole。我想执行一个我在编辑器中单独编辑的文件。当我在编辑器中对文件进行更改并在IPython中重新运行它时,使用以下命令:\n

%run myfile.py

\n代码没有更新。然而,如果我从终端正常运行ipython,那么这个问题就没有。我尝试在QT控制台中使用autoreload:\n

%load_ext autoreload
%autoreload

\n但它没有解决问题。这里出了什么问题?

0
0 Comments

IPython在QTConsole中运行时不会重新加载代码的问题出现的原因是IPython的autoreload机制不会自动重新加载代码。解决方法是使用Python的reload函数来进行代码的重新加载,例如reload(module)。需要注意的是,这种方法不会自动重新加载依赖项,因此还需要重新加载任何嵌套的导入。可以参考这个问题获取更多信息。

0
0 Comments

问题:

在QTConsole中运行IPython时,发现代码没有被重新加载。

原因:

在IPython中,当代码被导入后,它会被缓存起来,这样在之后的运行中就不会重新加载。这是为了提高运行效率,在交互式环境中非常有用。然而,这也可能导致一些问题,比如在开发过程中对代码进行修改后,QTConsole中的IPython并不会重新加载修改后的代码。

解决方法:

可以使用importlib库来重新加载代码。importlib是一个标准库,可以在Python 3中直接使用,也可以在Python 2中通过pip安装。

以下是解决方法的代码示例:

import importlib
importlib.reload()

其中,是要重新加载的模块的名称。通过调用reload()函数,可以重新加载指定的模块,使得修改后的代码生效。

使用importlib.reload()函数可以解决QTConsole中IPython不重新加载代码的问题。在开发过程中,如果需要对代码进行修改并立即生效,可以使用这种方法。

0