IPython Notebook %%bash 魔法错误

3
我正在尝试跟随Fernando Perez在IPython笔记本中的版本控制教程,可以在此处找到其静态版本here
他广泛使用%%bash魔术指令,但当我使用它时,会出现以下错误:
ERROR:未找到单元格魔术函数%%bash
即使我使用!git命令也一切正常。
具体细节如下:
C:\Python27\Scripts;
C:\Program Files (x86)\Git\cmd;
C:\Program Files (x86)\Git\bin\;

所有内容已添加到我的系统路径中。
我正在运行通过Christoph Gohlke在他的网站上安装的64位Windows二进制IPython版本0.13.2。
正在运行Git 1.8.0。
相关链接: 魔法函数“bash”未找到 他的解决方案是更新他的IPython版本。我的版本已更新。
1个回答

8

原因是你在 Windows 上运行。Windows 没有 bash,而是 cmd。相应的是,ipython 没有 %%bash 魔法命令,而是 %%cmd 魔法命令。你可以尝试将命令重写为 %%cmd,但要注意 cmd 与 bash 不同,因此他的命令可能不会完全正常工作。

在 Windows 上运行此笔记本,需要安装 cygwin 并从那里运行 ipython。你不需要在 cygwin 中安装 ipython - 直接运行 Windows 版本的 ipython 就可以了,但你必须从 cygwin shell 运行它。


更新: 经过一些研究,我发现什么使得 cygwin shell 特殊:它将 bash 放在其 PATH 中。因此,你并不需要 cygwin。只需安装 git,然后创建一个名为 notebook.bat 的批处理文件或类似的内容:

@echo off
set PATH=%PATH%;C:\Program Files\Git\bin
ipython notebook

当你使用此批处理文件运行笔记本时,%%bash 命令将可用且正常工作。

感谢回答我的问题。我以为%%bash命令与Git Bash有关。现在我感到很傻。就像我上面列出的那样,我可以使用'!'命令在IPython中执行git命令,但是当我使用相同的表达式即'%%cmd git status'时,没有响应。另外,为什么我必须从cygwin目录启动笔记本电脑?这样做会使'%%bash'风格的魔术生效吗? - agconti
运行%%cmd \n git status应该可以工作(注意换行符!)。另外我没有提到cygwin的dir - 我是在谈论cygwin的shell ;) - Chronial
好的,仅从Git shell运行IPython是不够的。但是要澄清的是:如果您从Cygwin shell运行IPython,则%%bash魔法将起作用。 - Chronial
感谢对cygwin shell %%bash的澄清。'%%cmd \n git status' 对我仍然无效,而!git status却可以正常工作。我在IPython Notebook中运行这些命令,所以当我写下'%%cmd git status'时,换行符被隐含在笔记本中。我想使用%%cmd / %%bash语法,因为我希望从Notebook中处理所有版本控制,以备份我的研究项目。随着我对git命令的使用变得越来越复杂,'!'的使用开始变得繁琐,而%%cmd魔法则变得越来越必要。此外,魔法打印与您在git中获得的打印相同。 - agconti
响应与直接执行 %%cmd 相同。以下是它的内容:' Microsoft Windows [版本 6.2.9200] (c) 2012 Microsoft Corporation。保留所有权利。C:\Users[我的用户ID]>' - agconti
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接