Tag: ipython

在版本控制下使用IPython笔记本

在版本控制下保持IPython笔记本的好策略是什么? 笔记本电脑的格式对于版本控制来说是非常合适的:如果想要对笔记本电脑和输出进行版本控制,那么这个工作起来相当好。 当人们只想控制input的版本,排除单元输出(也就是“构build产品”),这可能是大的二进制blob,尤其是对于电影和情节。 特别是,我试图find一个好的工作stream程: 允许我在包含或排除输出之间进行select, 如果我不想要,可以防止我意外地提交输出, 允许我保持输出在我的本地版本, 允许我使用我的版本控制系统查看input更改的时间(例如,如果我只是版本控制input,但是本地文件有输出,那么我希望能够看到input是否已经改变(需要提交)。使用版本控制状态命令将始终注册一个差异,因为本地文件有输出。) 允许我从更新的清洁笔记本更新我的工作笔记本(其中包含输出)。 (更新) 如前所述,如果我select包括输出(例如,当使用nbviewer时,这是可取的),那么一切都很好。 问题是当我不想版本控制输出。 有一些工具和脚本剥离笔记本的输出,但是我经常遇到以下问题: 我不小心提交了一个版本的输出,从而污染我的存储库。 我清除输出使用版本控制,但真的宁愿输出在我的本地副本(有时需要一段时间重现例如)。 与Cell/All Output/Clear菜单选项相比,某些剥离输出的脚本会略微改变格式,从而在差异中产生不需要的噪音。 这是通过一些答案解决的。 当更改为干净版本的文件时,我需要find一些方法将这些更改合并到工作笔记本中,而无需重新运行所有内容。 (更新) 我已经考虑了几个我将在下面讨论的选项,但还没有find一个好的综合解决scheme。 完整的解决scheme可能需要对IPython进行一些更改,或者可能依赖于一些简单的外部脚本。 我目前使用的是mercurial ,但是想要一个也适用于git的解决scheme:理想的解决scheme是版本控制不可知的。 这个问题已经被讨论了很多次,但是从用户的angular度来看,并没有明确或清晰的解决scheme。 这个问题的答案应该提供明确的策略。 如果需要IPython的最新版本(甚至是开发版本)或简单安装的扩展,那就好了。 更新:我一直在玩我的修改后的笔记本版本,可以select使用Gregory Crosswhite的build议保存.clean版本。 这满足了我的大部分约束条件,但还是留下了以下内容: 这还不是一个标准的解决scheme(需要修改ipython源代码,是否有一种方法可以通过简单的扩展来实现这种行为?需要某种保存钩子。 我在当前工作stream程中遇到的一个问题是拉动变化。 这些将进入.clean文件,然后需要以某种方式集成到我的工作版本中。 (当然,我总是可以重新执行笔记本,但是这可能会很痛苦,特别是如果某些结果依赖于长时间的计算,并行计算等等)。我对如何解决这个问题还没有一个好主意。 也许像ipycache这样的扩展工作stream可能会工作,但这似乎有点太复杂。 笔记 删除(剥离)输出 当笔记本正在运行时,可以使用Cell/All Output/Clear菜单选项来删除输出。 有一些用于删除输出的脚本,例如脚本nbstripout.py删除输出,但不会产生与使用笔记本界面相同的输出。 这最终被包含在ipython / nbconvert repo中,但是这已经被封闭,声称现在包含在ipython / ipython中的更改 ,但相应的function似乎还没有包括在内。 (更新)那么, Gregory Crosswhite的解决scheme表明,即使不调用ipython / nbconvert ,这个方法也很容易实现 ,所以如果可以正确挂接,这种方法可能是可行的。(附加到每个版本控制系统上,似乎不是一个好主意 – […]

在IPython中重新加载子模块

目前我正在研究一个包含子模块并使用numpy / scipy的python项目。 Ipython被用作交互式控制台。 不幸的是,我对现在使用的工作stream程并不满意,希望能给出一些build议。 在IPython中,框架是通过一个简单的import命令加载的。 但是,通常需要在框架的某个子模块中更改代码。 在这一点上,一个模型已经加载,我使用IPython与它进行交互。 现在,这个框架包含了很多相互依赖的模块,也就是说,当框架初始加载时,主模块正在导入和configuration子模块。 代码的更改只有在使用reload(main_mod.sub_mod)重新reload(main_mod.sub_mod)模块时才会执行。 这很麻烦,因为我需要使用完整path分别重新加载所有已更改的模块。 如果reload(main_module)也会重新加载所有的子模块,但是没有重新加载numpy / scipy,这将是非常方便的。

如何使IPython笔记本matplotlib图内联

我试图在Python 2.7.2和IPython 1.1.0上使用MacOS X上的IPython笔记本。 我不能让matplotlibgraphics显示内联。 import matplotlib import numpy as np import matplotlib.pyplot as plt %matplotlib inline 我也尝试%pylab inline和ipython命令行参数–pylab=inline但是这没什么区别。 x = np.linspace(0, 3*np.pi, 500) plt.plot(x, np.sin(x**2)) plt.title('A simple chirp') plt.show() 而不是内联graphics,我得到这个: <matplotlib.figure.Figure at 0x110b9c450> 而matplotlib.get_backend()显示我有'module://IPython.kernel.zmq.pylab.backend_inline'后端。

在IPython Notebook中使用Python 2.x和Python 3.x

我使用IPython笔记本,并希望能够select在IPython中创build2.x或3.x python笔记本。 我最初有Anaconda。 随着Anaconda一个全局环境variables不得不改变,select你想要的Python版本,然后IPython可以启动。 这不是我正在寻找的,所以我卸载了Anaconda,现在已经使用MacPorts和PiP设置了我自己的安装。 看来我还是要用 port select –set python <python version> 在Python 2.x和3.x之间切换。 这并不比python解决scheme好。 有没有办法select你想在启动IPython笔记本后使用什么版本的Python,最好用我目前的MacPorts版本?

IPython笔记本区域设置错误

安装最新的Mac OSX 64位Anaconda Python发行版之后 ,在尝试启动IPython Notebook时,我不断收到一个ValueError。 开始ipython正常工作: 3-millerc-~:ipython Python 2.7.3 |Anaconda 1.4.0 (x86_64)| (default, Feb 25 2013, 18:45:56) Type "copyright", "credits" or "license" for more information. IPython 0.13.1 — An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about […]