在使用 python 解释器运行脚本时,忽略 IPython 魔术的最佳方法是什么?
我经常在我的脚本文件中包含 IPython magic,因为它以交互方式与代码一起工作。例如,使用 autoreload 魔法,我不必在进行一些更改和修复错误后继续重新加载-ing 模块:
%load_ext autoreload
%autoreload 2
但是,当我尝试使用普通的 python 解释器运行此脚本时,出现错误:
File "<string>", line 1
%load_ext autoreload
^
SyntaxError: invalid syntax
在 if 语句中包装 IPython 魔法是行不通的,因为在文件实际运行之前会检测到不正确的语法。
那么让 python 忽略 IPython 魔法的最佳方法是什么?
每当您想在 python、pdb、sphinx 等中运行时都必须更改脚本,这很烦人。
请您参考如下方法:
对于所有可以从标准输入读取的工具,您可以使用 grep 删除任何魔法线并将结果通过管道传输到 python:
grep -v '^%' magicscript.ipy | python
作为 bash 别名运行良好:
alias pynomagic='( grep -v "^%" | python ) < '
pynomagic magicscript.ipy
像 pdb 这样只接受文件名的工具可以这样调用(再次 bash):
pdb <(grep -v '^%' magicscript.ipy)
