如何解决以编程方式检查并禁用IPython自动重载扩展
我有一个使用Python importlib
包来动态重新加载模块的函数,当用户从IPython运行代码并加载了autoreload
扩展名并启用了自动重新加载功能时,模块会产生一些错误(即%autoreload 2
)。我想做的是让我的代码检测用户是否正在运行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")
解决方法
查看自动重装源代码后,似乎应该可以进行以下操作
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。