标签: ipython-magic

如何在IPython笔记本中显示包函数的源代码

出于教学目的,我想要一个IPython笔记本显示(作为单元格的输出)功能源代码,但我希望能够在多个笔记本中引用它.因此,我希望以类似于使用%psource魔术的方式显示功能代码,但会突出显示适当的语法.

这是与此问题类似的问题,但我希望能够将其应用于文件中的单个函数,而不是一次性应用于完整文件.

使用上一个问题的建议我破解了一个简单的短代码:

def print_source(module, function):
    """For use inside an IPython notebook: given a module and a function, print the source code."""
    from inspect import getmembers, isfunction, getsource
    from pygments import highlight
    from pygments.lexers import PythonLexer
    from pygments.formatters import HtmlFormatter
    from IPython.core.display import HTML

    internal_module = __import__(module)

    internal_functions = dict(getmembers(internal_module, isfunction))

    return HTML(highlight(getsource(internal_functions[function]), PythonLexer(), HtmlFormatter(full=True)))
Run Code Online (Sandbox Code Playgroud)

两个问题:

  1. 这个要点表明,通过定义适当的细胞魔法可以显示整个功能.是否有可能定义一个合适的单元魔术来显示单个函数,如上所述?
  2. 有没有一种方法可以在不导入整个模块的情况下执行此操作,或者采用更强大的方式执行此操作?

python ipython ipython-notebook ipython-magic

11
推荐指数
1
解决办法
2524
查看次数

如何存储来自%% timeit cell magic的结果?

我无法弄清楚如何存储细胞魔法的结果 - %%timeit?我读了:

  1. 你能捕获ipython魔法的输出吗?
  2. 捕获IPython魔术函数的结果

而在这个问题中只回答线魔术.在行模式(%)这适用:

In[1]: res = %timeit -o np.linalg.inv(A)
Run Code Online (Sandbox Code Playgroud)

但在单元格模式(%%)中它没有:

In[2]: res = %%timeit -o 
       A = np.mat('1 2 3; 7 4 9; 5 6 1')
       np.linalg.inv(A)
Run Code Online (Sandbox Code Playgroud)

它只是执行单元格,没有魔法.这是一个错误还是我做错了什么?

python ipython ipython-magic

11
推荐指数
1
解决办法
2747
查看次数

捕获IPython魔术函数的结果

我正在尝试捕获IPython Notebook魔术函数的结果对象.特别%timeit

所以下面的代码......

import time
def say_hello(n):
    time.sleep(n)
    print "hello"

t = %timeit say_hello(5)
Run Code Online (Sandbox Code Playgroud)

打印到stdout:

1 loops, best of 3: 5 s per loop
Run Code Online (Sandbox Code Playgroud)

但是,我想捕获%timeit say_hello(5)变量的结果t.

调用TimeitResult生成的对象是由生成的%timeit,但我无法弄清楚如何从Notebook中访问它.

我想要一个更清洁的解决方案,而不是使用sys.stdout技巧手动捕获stdout (此代码将是演示文稿的一部分,所以我试图尽可能地保持它直接).有人有主意吗?

python ipython ipython-magic

10
推荐指数
1
解决办法
3079
查看次数

如何在iPython笔记本中设置默认启动命令?

我希望在我创建的每个新笔记本中几乎每个新笔记本中都放置几个单元格.

例如,当我创建一个新笔记本时,它应该放一个

%matplotlib inline
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

默认情况下在单元格中但不执行它.我怎么能设置这样的东西?

ipython-notebook ipython-magic jupyter-notebook

10
推荐指数
2
解决办法
2802
查看次数

Jupyter笔记本时间分析

所以我通过anaconda安装了jupyter笔记本,我正在使用python 3内核.

我试图用做时间分析%time魔术命令,显示这里 的问题是,它只能打印挂钟时间不是CPU时间

使用%time%%time没有帮助

  • %time打印壁时间第一线
  • %%time打印挂钟时间全细胞

我不确定是否有任何特定配置来打印CPU时间

编辑

澄清使用%%time应该打印整个单元格的两个指标

  • 指标1:CPU时间
  • 指标2:壁挂时间

我的问题是我只能获得壁时而不是CPU时间.

您可以查看此链接的预期输出%%time

python python-3.x ipython-notebook ipython-magic jupyter-notebook

10
推荐指数
1
解决办法
9123
查看次数

ipython 魔法命令中 % 和 %% 之间的区别

%timeit在 ipython 中使用和有何区别%%timeit?因为当我阅读使用的文档时?%timeit?%%timeit它是相同的文档。那么,添加%前缀有什么区别呢?

ipython ipython-magic

10
推荐指数
1
解决办法
2390
查看次数

错误:线魔术功能

我正在尝试使用python读取文件,我不断收到此错误

ERROR: Line magic function `%user_vars` not found.
Run Code Online (Sandbox Code Playgroud)

我的代码非常简单

names = read_csv('Combined data.csv')
names.head()
Run Code Online (Sandbox Code Playgroud)

我在尝试阅读或打开文件的任何时候都会得到这个.我尝试使用这个帖子寻求帮助.

错误:找不到行魔术功能`%matplotlib`

我正在使用enthought冠层,我有IPython版本2.4.1.我确保使用IPython安装页面进行更新以获取帮助.我不确定什么是错的,因为打开/读取文件应该非常简单.我甚至因打开文本文件而出现此错误.

编辑:

我导入了traceback并使用了

 print(traceback.format_exc())
Run Code Online (Sandbox Code Playgroud)

但我得到的只是没有打印.我不确定这意味着什么.

python ipython ipython-magic canopy

9
推荐指数
1
解决办法
5542
查看次数

使用Windows 7从IPython复制到剪贴板

我在Windows 7上运行IPython,可以使用%pastemagic命令从剪贴板粘贴.但是,我无法从IPython复制到剪贴板.我想从IPython中复制代码片段并将它们粘贴回文本编辑器.

有人知道解决这个问题吗?

windows ipython ipython-magic

8
推荐指数
2
解决办法
5145
查看次数

如何在ipdb上自动完成iPython笔记本?

我正在iPython笔记本中运行一些单元格.我在单元格的头部使用了%% debug命令.现在,当我在ipdb提示符下并且我点击了ctrl +空格或制表符时,自动完成似乎无法正常工作.

如何使用自动完成?

ipython ipython-magic jupyter

8
推荐指数
1
解决办法
6656
查看次数

Cython ipython魔术与编译时环境变量

%%cython命令非常方便创建cython函数而无需构建和使用包.该命令有几个选项,但我找不到在那里指定编译时环境变量的方法.

我想要相当于:

from Cython.Distutils.extension import Extension
ext = Extension(...
                cython_compile_time_env={'MYVAR': 10},
                ...)
Run Code Online (Sandbox Code Playgroud)

%%cython命令.

我已经尝试过:

%%cython -cython_compile_time_env={'MYVAR':10}

IF MYVAR:
    def func():
        return 1
ELSE:
    def func():
        return 2
Run Code Online (Sandbox Code Playgroud)

但是这引发了一个异常:

Error compiling Cython file:
------------------------------------------------------------
...

IF MYVAR:
       ^
------------------------------------------------------------

...\.ipython\cython\_cython_magic_28df41ea67fec254f0be4fc74f7a6a54.pyx:2:8: Compile-time name 'MYVAR' not defined
Run Code Online (Sandbox Code Playgroud)

%%cython --cython_compile_time_env={'MYVAR':10}

IF MYVAR:
    def func():
        return 1
ELSE:
    def func():
        return 2
Run Code Online (Sandbox Code Playgroud)

UsageError:无法识别的参数: - cython_compile_time_env = {'MYVAR':10}

python ipython cython ipython-magic

8
推荐指数
1
解决办法
242
查看次数