在使用IPython解释器运行脚本时,忽略python魔力的最好方法是什么?
我经常在我的脚本文件中包含IPython魔术,因为它与代码交互地工作。例如,有了autoreload
的魔力,在我做了一些更改和修复错误之后,我就不需要保留reload
-ing模块了:
%load_ext autoreload
%autoreload 2
然而,当我尝试使用一个普通的python解释器运行这个脚本时,我得到了一个错误:
File "<string>", line 1
%load_ext autoreload
^
SyntaxError: invalid syntax
在if
语句中包装IPython不起作用,因为在实际运行文件之前会检测到不正确的语法。
那么,让python忽略IPython魔力的最好方法是什么呢?
每当你想在python、pdb、sphinx等中运行脚本时,都必须更改脚本,这是很烦人的。
发布于 2015-06-01 00:21:39
对于所有可以读取标准输入的工具,您可以使用grep删除任何魔术行,并将结果通过管道传输到python中:
grep -v '^%' magicscript.ipy | python
可以用作bash别名:
alias pynomagic='( grep -v "^%" | python ) < '
pynomagic magicscript.ipy
像pdb这样只接受文件名的工具可以这样调用(同样是bash):
pdb <(grep -v '^%' magicscript.ipy)
发布于 2019-04-12 01:20:51
以防这对任何人有帮助。
至少对于Databricks来说,当在Github中将笔记本与.py文件同步时,可以使用特殊格式的注释指定一个神奇的函数。如下所示:
# MAGIC %run ./my_external_file
发布于 2015-06-01 03:00:38
你应该在你的配置文件中加载这样的魔法,而不是在你的脚本中!它只是不是有效的Python。
将以下内容放入您的~/.ipython/profile_default/ipython_config.py
c = get_config()
c.InteractiveShellApp.extensions = ['autoreload']
c.InteractiveShellApp.exec_lines = ['%autoreload 2']
c.InteractiveShellApp.exec_lines.append('print("Warning: disable autoreload in ipython_config.py to improve performance.")')
https://stackoverflow.com/questions/30559096
复制相似问题