这是我关于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
我做错了什么?是不是设置不正确?
答案 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