出于教学目的,我想要一个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)
两个问题:
我无法弄清楚如何存储细胞魔法的结果 - %%timeit?我读了:
而在这个问题中只回答线魔术.在行模式(%)这适用:
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)
它只是执行单元格,没有魔法.这是一个错误还是我做错了什么?
我正在尝试捕获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 (此代码将是演示文稿的一部分,所以我试图尽可能地保持它直接).有人有主意吗?
我希望在我创建的每个新笔记本中几乎每个新笔记本中都放置几个单元格.
例如,当我创建一个新笔记本时,它应该放一个
%matplotlib inline
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)
默认情况下在单元格中但不执行它.我怎么能设置这样的东西?
所以我通过anaconda安装了jupyter笔记本,我正在使用python 3内核.
我试图用做时间分析%time魔术命令,显示这里
的问题是,它只能打印挂钟时间不是CPU时间
使用%time或%%time没有帮助
%time打印壁时间为第一线仅%%time打印挂钟时间的全细胞 我不确定是否有任何特定配置来打印CPU时间
编辑
澄清使用%%time应该打印整个单元格的两个指标
我的问题是我只能获得壁时而不是CPU时间.
您可以查看此链接的预期输出%%time
python python-3.x ipython-notebook ipython-magic jupyter-notebook
%timeit在 ipython 中使用和有何区别%%timeit?因为当我阅读使用的文档时?%timeit,?%%timeit它是相同的文档。那么,添加%前缀有什么区别呢?
我正在尝试使用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)
我在尝试阅读或打开文件的任何时候都会得到这个.我尝试使用这个帖子寻求帮助.
我正在使用enthought冠层,我有IPython版本2.4.1.我确保使用IPython安装页面进行更新以获取帮助.我不确定什么是错的,因为打开/读取文件应该非常简单.我甚至因打开文本文件而出现此错误.
编辑:
我导入了traceback并使用了
print(traceback.format_exc())
Run Code Online (Sandbox Code Playgroud)
但我得到的只是没有打印.我不确定这意味着什么.
我在Windows 7上运行IPython,可以使用%pastemagic命令从剪贴板粘贴.但是,我无法从IPython复制到剪贴板.我想从IPython中复制代码片段并将它们粘贴回文本编辑器.
有人知道解决这个问题吗?
我正在iPython笔记本中运行一些单元格.我在单元格的头部使用了%% debug命令.现在,当我在ipdb提示符下并且我点击了ctrl +空格或制表符时,自动完成似乎无法正常工作.
如何使用自动完成?
该%%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}
ipython-magic ×10
ipython ×8
python ×6
canopy ×1
cython ×1
jupyter ×1
python-3.x ×1
windows ×1