Skip to main content
 首页 » 编程设计

python之忽略 python 中的 IPython 魔法

2025年05月04日14zlslch

在使用 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)