什么是使用Python解释器运行脚本时忽略IPython的魔术的最佳方式?
我经常包括我的脚本文件IPython的魔力,因为它与代码打交道的交互。 例如,与autoreload
魔力,我没有让reload
-ing模块后,我做出一些改变和修正错误:
%load_ext autoreload
%autoreload 2
然而,当我尝试使用普通的Python解释器运行该脚本,我得到一个错误:
File "<string>", line 1
%load_ext autoreload
^
SyntaxError: invalid syntax
包装内的IPython的魔法if
语句不工作,因为之前该文件实际上是跑到检测不正确的语法。
那么,什么是让Python忽略IPython的魔术的最佳方式?
这很烦人不得不改变你的脚本,每当你想在python,PDB,狮身人面像等,然后运行
对于可以从标准输入读取所有的工具,你可以使用grep任何魔法系和管结果中删除到蟒蛇:
grep -v '^%' magicscript.ipy | python
作品还有一个bash别名:
alias pynomagic='( grep -v "^%" | python ) < '
pynomagic magicscript.ipy
像PDB工具只接受的文件名可以(再次bash)的称为是这样的:
pdb <(grep -v '^%' magicscript.ipy)
你应该在你的配置文件加载这样的魔力,而不是在你的脚本! 这是不合法的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.")')
在这种情况下,任何人帮助。
至少对于Databricks,在Github上一个.py文件同步笔记本时,一个神奇的功能,可以用一个特殊格式的注释说明。 像这样:
# MAGIC %run ./my_external_file