以编程方式检查并禁用IPython自动加载扩展



我有一个函数,它使用Pythonimportlib包动态重新加载模块,当用户从IPython运行代码时,会产生一些错误,并且加载了autoreload扩展并打开了自动重新加载(即%autoreload 2(。我想做的是让我的代码检测用户是否正在运行IPython,是否加载了扩展,并将其设置为自动重新加载。如果是,禁用它,运行我的代码块,然后重新启用它

我相信我可以使用以下代码来检测我们是否在IPython中并运行magic函数,但我不知道如何通过编程检查autoreload是否已加载以及%autoreload 2是否已设置。

from IPython import get_ipython
ipy = get_ipython()
if not ipy is None:
# Need to check for %autoreload 2 here
ipy.magic("%autoreload 0")
# Run some code
ipy.magic("%autoreload 2")

在查看了autoreload源代码后,似乎以下内容应该可以使用

from IPython import get_ipython
ipy = get_ipython()
if not ipy is None:
if 'autoreload' in sys.modules:
check_all = ipy.magics_manager.magics['line']['autoreload'].__self__._reloader.check_all
enabled = ipy.magics_manager.magics['line']['autoreload'].__self__._reloader.enabled
parameter = 0
if check_all is False and enabled is True:
parameter = 1
elif check_all is True and enabled is True:
parameter = 2

最新更新