有没有办法获取当前加载的 IPython 扩展的列表?
例如,如果我使用%load_ext autoreload或运行以下命令将扩展 autoreload 加载到 IPython 中:
from IPython import get_ipython
ipython = get_ipython()
ipython.magic("%load_ext autoreload")
Run Code Online (Sandbox Code Playgroud)
有什么办法可以证明我已经加载了这个扩展?
我已经通过使用类似的东西直接访问输入历史来尝试这个
from IPython import get_ipython
ipython = get_ipython()
hist = ipython.extract_input_lines("0:100")
Run Code Online (Sandbox Code Playgroud)
但事实证明,IPython 不会在此处或在可通过In和访问的历史列表中存储带有魔法函数的输入_ih。似乎只保存了执行普通 Python 的行。
无论如何,这个方案一般都行不通。如果脚本调用runfile跑load_ext,都将在历史上被视为会是这样的runfile('script_name.py', wdir='path/to/wdir')。
通过浏览%load_ext代码弄清楚了这一点:
from IPython import get_ipython
ip = get_ipython()
ip.extension_manager.loaded
Run Code Online (Sandbox Code Playgroud)