%load_ext 如何在 ipython 中工作
How %load_ext work in ipython
我安装包:https://github.com/jaysw/ipydb
根据教程,我应该使用它来启用它,
$ ipython
In [1] : %load_ext ipydb
它看起来像一个 IPython 扩展。
但是我很困惑,这个包没有安装在我的“~/.ipython/extentions”
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/extensions/
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/nbextensions/
livereveal usability
所以,我想知道
%load_ext 魔术是如何工作的,或者当我输入“%load_ext ipydb”时发生了什么事
如果我只输入“ipython”,ipython如何进行配置,这将使用默认配置文件,但我的“~/.[=”下没有配置文件41=]/ "
以下是默认配置文件和一个用户定义的配置文件:
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/profile_default/
db history.sqlite log nbconfig pid security startup static
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ipython profile create my_profile
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_kernel_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_console_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_qtconsole_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_notebook_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_nbconvert_config.py'
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/profile_my_profile/
ipython_config.py ipython_nbconvert_config.py log startup
ipython_console_config.py ipython_notebook_config.py pid static
ipython_kernel_config.py ipython_qtconsole_config.py security
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$
谢谢,
ok,终于在ipython找到加载扩展的逻辑了:
源码开启:https://github.com/ipython/ipython/blob/master/IPython/core/extensions.py
核心逻辑是:
def load_extension(self, module_str):
"""Load an IPython extension by its module name.
Returns the string "already loaded" if the extension is already loaded,
"no load function" if the module doesn't have a load_ipython_extension
function, or None if it succeeded.
"""
if module_str in self.loaded:
return "already loaded"
from IPython.utils.syspathcontext import prepended_to_syspath
with self.shell.builtin_trap:
if module_str not in sys.modules:
with prepended_to_syspath(self.ipython_extension_dir):
__import__(module_str)
mod = sys.modules[module_str]
if self._call_load_ipython_extension(mod):
self.loaded.add(module_str)
else:
return "no load function"
现在明白了,感谢 IPython 团队构建了如此出色的工具,我真的很喜欢它。
我安装包:https://github.com/jaysw/ipydb
根据教程,我应该使用它来启用它,
$ ipython
In [1] : %load_ext ipydb
它看起来像一个 IPython 扩展。
但是我很困惑,这个包没有安装在我的“~/.ipython/extentions”
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/extensions/
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/nbextensions/
livereveal usability
所以,我想知道
%load_ext 魔术是如何工作的,或者当我输入“%load_ext ipydb”时发生了什么事
如果我只输入“ipython”,ipython如何进行配置,这将使用默认配置文件,但我的“~/.[=”下没有配置文件41=]/ "
以下是默认配置文件和一个用户定义的配置文件:
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/profile_default/
db history.sqlite log nbconfig pid security startup static
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ipython profile create my_profile
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_kernel_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_console_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_qtconsole_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_notebook_config.py'
[ProfileCreate] Generating default config file: u'/Users/aaron/.ipython/profile_my_profile/ipython_nbconvert_config.py'
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/profile_my_profile/
ipython_config.py ipython_nbconvert_config.py log startup
ipython_console_config.py ipython_notebook_config.py pid static
ipython_kernel_config.py ipython_qtconsole_config.py security
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$
谢谢,
ok,终于在ipython找到加载扩展的逻辑了:
源码开启:https://github.com/ipython/ipython/blob/master/IPython/core/extensions.py
核心逻辑是:
def load_extension(self, module_str):
"""Load an IPython extension by its module name.
Returns the string "already loaded" if the extension is already loaded,
"no load function" if the module doesn't have a load_ipython_extension
function, or None if it succeeded.
"""
if module_str in self.loaded:
return "already loaded"
from IPython.utils.syspathcontext import prepended_to_syspath
with self.shell.builtin_trap:
if module_str not in sys.modules:
with prepended_to_syspath(self.ipython_extension_dir):
__import__(module_str)
mod = sys.modules[module_str]
if self._call_load_ipython_extension(mod):
self.loaded.add(module_str)
else:
return "no load function"
现在明白了,感谢 IPython 团队构建了如此出色的工具,我真的很喜欢它。