Bash IPython 脚本中的细胞魔法
Bash cell magic in IPython script
这是我第一次 post 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
我做错了什么?是不是设置不正确?
您不需要顶部的 #!/usr/bin/env ipython
行。
单元格魔法应该在单元格的第一行。
只需尝试以下操作,它应该会起作用
%%bash
ls
您不需要顶部的 #!/usr/bin/env ipython 行。
错误:
%%bash
ls
简短回答:魔术命令只能在 IPython 交互式会话中理解,而不是在脚本中。
更长的答案:它们可以在脚本中调用,但只能使用库调用,而不是 How to run an IPython magic from a script (or timing a Python script) 中描述的 %%
符号。请注意,该机制是 IPython 版本相关的。
这是我第一次 post 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
我做错了什么?是不是设置不正确?
您不需要顶部的 #!/usr/bin/env ipython
行。
单元格魔法应该在单元格的第一行。
只需尝试以下操作,它应该会起作用
%%bash
ls
您不需要顶部的 #!/usr/bin/env ipython 行。 错误:
%%bash
ls
简短回答:魔术命令只能在 IPython 交互式会话中理解,而不是在脚本中。
更长的答案:它们可以在脚本中调用,但只能使用库调用,而不是 How to run an IPython magic from a script (or timing a Python script) 中描述的 %%
符号。请注意,该机制是 IPython 版本相关的。