转换Jupyter笔记本"%"命令正常python

时间:2018-06-02 11:33:52

标签: python ipython

我目前正在关注Holoviews tutorial。那里的所有东西都是用笔记本电脑完成的,并且使用了'%'句法。我从来没有使用过笔记本电脑(也不是特别想要的)。如何在普通的.py文件中写这些行?这是一个例子:

 %opts Graph [width=400 height=400]

我尝试过一些事情,例如:

graph=hv.Graph.opts(width=400, height=400)
graph=hv.Graph.opts(width=[400], height=[400])
hv.Graph(width=400, height=400)

这些都抛出错误。该%语法实际上如何工作?该列表中没有逗号?我只想正常设置图表的宽度和高度。谢谢!

1 个答案:

答案 0 :(得分:1)

Tl;博士:如果你真正感兴趣的是在jupyter笔记本环境之外使用holoviews(就像OP那样),请参阅holoviews文档中的Outside the notebook部分。简而言之,魔术%%opts Graph [width=400 height=400]对应于在某个g.options(width=400, height=400)对象Graph上调用方法g

如果您正在阅读此内容,因为您对jupyter的%“魔法”感到好奇,请继续阅读。

您可以在笔记本中使用的“%”命令就是所谓的ipython“magics”。您将找到标准列表here。因此它们在普通Python中不可用,但是ipython理解%语法并将其转换为对特定库的调用。因此,访问它们的最简单方法是使用相同的%语法来启动,而是运行ipython而不是python

您还会问%语法的工作原理。第三方软件包可以通过使用简单的装饰器将其部分功能“注册”为自定义ipython魔术:

@line_magic
def lmagic(self, line):
    "my line magic"
    print("Full access to the main IPython object:", self.shell)
    print("Variables in the user namespace:", list(self.shell.user_ns.keys()))
    return line

请参阅defining custom magics的文档中的详细信息。

最后,您当然更感兴趣的是从hv魔法到相应的Python代码。看来你所诅咒的%%opts魔法就是这个类的一种方法:holoviews.ipython.magics.OptsMagic。我不使用全息视图,但似乎这样的东西可能等同于你问题中的魔法:

from holoviews.ipython.magics import OptsMagic
om = OptsMagic()
om.opts("Graph [width=400 height=400]") 

请注意,您可能还需要选择图形后端,例如使用backend关键字选项。