IPython-使用自定义magic导入/填充命名空间

IPython-使用自定义magic导入/填充命名空间,ipython,ipython-notebook,ipython-magic,Ipython,Ipython Notebook,Ipython Magic,IPython中的%pylab魔术将一系列函数导入用户的工作区,这非常方便。看看代码,根本不清楚这是怎么做到的。到目前为止,我的启动文件夹中有一个神奇的功能: from IPython.core.magic import register_line_magic @register_line_magic def import_my_functions(line): """ Import functions into namespace somehow.... e.g. i

IPython中的
%pylab
魔术将一系列函数导入用户的工作区,这非常方便。看看代码,根本不清楚这是怎么做到的。到目前为止,我的启动文件夹中有一个神奇的功能:

from IPython.core.magic import register_line_magic

@register_line_magic
def import_my_functions(line):
    """
    Import functions into namespace somehow....
    e.g. import numpy as np
    """
然后,应该可以:

In[1]: %import_my_functions
 imported the following:
   numpy as np
   .....
In[2]: np
Out[2]: <module 'numpy' from ..../venv/lib/python2.7/site-packages/numpy/__init__.pyc'>
[1]中的
:%import\u my\u函数
已导入以下内容:
作为np的numpy
.....
In[2]:np
Out[2]:建议1:使用
%pylab

建议2:不要试图模仿pylab的用法,它会咬你的

如果您想方便地导入,请创建您自己的包,并从mypackage导入中执行
*


如果您真的想要一个能够访问python名称空间的魔法,您应该看看。并添加
@needs\u local\u scope
装饰器。

我一直在使用mypackage import*
中的
,但它缺少某些东西。(1) 它无法重新加载已更改的模块。(2) 它不会让我根据参数来定义不同的东西(例如,我想根据是否指定了内联打印来定义不同的“重画”函数。(3)我不能从导入中调用其他魔法(比如神秘的
%matplotlib inline
)。这对(1)足够公平不过,您可能有一个函数,它可以接受参数,向上移动一帧并修改全局变量。但这可能有点太草率了。