[英]Programmatically check for and disable IPython autoreload extension
我有一个 function,它使用 Python importlib
package 动态重新加载模块,当用户从 IPython 运行代码并加载自动重新加载扩展并打开自动重新加载(即%autoreload 2
autoreload
时,会产生一些错误。 我想要做的是让我的代码检测用户是否正在运行 IPython,是否加载了扩展,并将其设置为自动重新加载。 如果是这样,禁用它,运行我的代码块,然后重新启用它。
我相信我可以使用以下代码来检测我们是否在 IPython 中并运行魔术函数,但我无法弄清楚如何以编程方式检查是否已加载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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.