python - 以编程方式检查并禁用 IPython 自动重载扩展
问题描述
我有一个函数,它使用 Python包动态重新加载模块,当用户从 IPython 运行代码并加载扩展并打开自动重新加载(即)importlib
时,会产生一些错误。我想做的是让我的代码检测用户是否正在运行 IPython,是否加载了扩展,并将其设置为自动重新加载。如果是这样,请禁用它,运行我的代码块,然后重新启用它。autoreload
%autoreload 2
我相信我可以使用以下代码来检测我们是否在 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
推荐阅读
- reactjs - 当使用 JEST/ENZYME 单击按钮时,我如何测试函数是否被调用
- python - 从 GoogleClassroomApi [403] Python 中检索 ClassWork
- xamarin.forms - 在 Prism Xamarin.Forms 中使用多个 Microsoft.Extension.Logging ILogger
- angular7 - 从循环角度表格列中读取值
- arrays - 不能在 Swift 中将类型字符串的值转换为 [string]
- sorting - 如何使用open mp在N个处理器之间划分n个数字
- python-3.x - 重塑数据帧时间序列
- reactjs - 如何删除 react-draft-wysiwyg 工具栏中的默认选项?
- python - 所有特征值都是正的,仍然 np.linalg.cholesky 给出矩阵不是正定的错误
- swift - 如何在 SwiftUI 的三元运算符中“什么都不做”?