在IPython脚本中使用Bash cell magic

时间:2015-01-14 19:49:17

标签: bash ipython

这是我关于SO的第一篇文章,所以如果问题没有明确定义,请告诉我。我有一个脚本 process.ipy ,其中我正在尝试按如下方式实现单元格魔法,

#!/usr/bin/env ipython

%%bash
ls

当我在命令行(Ubuntu和zsh shell)上运行它时,我收到以下错误,

$ ipython process.ipy                                                                                                 
File "<ipython-input-1-f108be8d32f2>", line 3
  %%bash
  ^
SyntaxError: invalid syntax

但是,我可以在ipython会话中运行它,没有问题,

In [1]: %%bash
   ...: ls
   ...: 
process.ipy

更令人困惑的是,单行版本在脚本中起作用,

#!/usr/bin/env ipython

!ls

我做错了什么?是不是设置不正确?

3 个答案:

答案 0 :(得分:2)

简答:魔术命令只能在IPython交互式会话中理解,而不能在脚本中理解。

更长的答案:可以在脚本中调用它们,但只能使用库调用,而不是How to run an IPython magic from a script (or timing a Python script)中描述的%%表示法。请注意,该机制依赖于IPython版本。

答案 1 :(得分:1)

您不需要顶部的#!/usr/bin/env ipython行。 细胞魔法应该是细胞中的第一行。

只需尝试以下操作就可以了

%%bash
ls

答案 2 :(得分:1)

您不需要顶部的#!/ usr / bin / env ipython线。 错误:

%%bash
ls