8

I install the package : https://github.com/jaysw/ipydb

And according to the tutorial, I should use to enable it,

$ ipython
In [1] : %load_ext ipydb

it looks like an IPython extention.

But I feel confused, that this package is not installed under my " ~/.ipython/extentions "

aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/extensions/
aaron@aarons-MacBook-Pro:~/Desktop/github/ipydb$ls ~/.ipython/nbextensions/
livereveal usability

So, I want to know

  • how %load_ext magic works or what happened when I type "%load_ext ipydb"

  • how ipython do the config if I just type " ipython ", which will use the default profile, but no config files under my " ~/.ipython/profile_default/ "

bellow is the default profile and one user defined profile:

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$

thanks,

taotao.li
  • 1,050
  • 2
  • 11
  • 23

1 Answers1

8

ok, finally, I just find out the logic of loading an extention in ipython:

source code is on: https://github.com/ipython/ipython/blob/master/IPython/core/extensions.py

and the core logic is :

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"

that make sense now, thanks IPython team to build such an excellent tool, I really love it.

taotao.li
  • 1,050
  • 2
  • 11
  • 23