首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >忽略python中的IPython魔术

忽略python中的IPython魔术
EN

Stack Overflow用户
提问于 2015-05-31 23:22:13
回答 3查看 1.7K关注 0票数 3

在使用IPython解释器运行脚本时,忽略python魔力的最好方法是什么?

我经常在我的脚本文件中包含IPython魔术,因为它与代码交互地工作。例如,有了autoreload的魔力,在我做了一些更改和修复错误之后,我就不需要保留reload-ing模块了:

代码语言:javascript
复制
%load_ext autoreload
%autoreload 2

然而,当我尝试使用一个普通的python解释器运行这个脚本时,我得到了一个错误:

代码语言:javascript
复制
  File "<string>", line 1
    %load_ext autoreload
    ^
SyntaxError: invalid syntax

if语句中包装IPython不起作用,因为在实际运行文件之前会检测到不正确的语法。

那么,让python忽略IPython魔力的最好方法是什么呢?

每当你想在python、pdb、sphinx等中运行脚本时,都必须更改脚本,这是很烦人的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-01 00:21:39

对于所有可以读取标准输入的工具,您可以使用grep删除任何魔术行,并将结果通过管道传输到python中:

代码语言:javascript
复制
grep -v '^%' magicscript.ipy | python

可以用作bash别名:

代码语言:javascript
复制
alias pynomagic='( grep -v "^%" | python ) < '
pynomagic magicscript.ipy

像pdb这样只接受文件名的工具可以这样调用(同样是bash):

代码语言:javascript
复制
pdb <(grep -v '^%' magicscript.ipy)
票数 3
EN

Stack Overflow用户

发布于 2019-04-12 01:20:51

以防这对任何人有帮助。

至少对于Databricks来说,当在Github中将笔记本与.py文件同步时,可以使用特殊格式的注释指定一个神奇的函数。如下所示:

# MAGIC %run ./my_external_file

票数 3
EN

Stack Overflow用户

发布于 2015-06-01 03:00:38

你应该在你的配置文件中加载这样的魔法,而不是在你的脚本中!它只是不是有效的Python。

将以下内容放入您的~/.ipython/profile_default/ipython_config.py

代码语言:javascript
复制
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.")')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30559096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档