从cygwin以交互方式运行win32 ipython二进制文件

时间:2013-07-19 04:49:38

标签: python cygwin

我真的想在一个正确的终端和cygwin提供的shell中交互运行我的Win7 ipython(mintty或rxvt会很棒)。

我在python方面取得了一些成功,但IPython并没有真正合作。如果我们从rxvt bash提示符运行它:

$ /cygdrive/c/pydir/python.exe -i

我最终得到了一个相当成功的python交互式会话。但是香草蟒蛇并不像IPython那么精彩。那么我试试这个:

$ /cygdrive/c/pydir/ipython.exe

并且程序只是阻止了bash提示符,并且似乎产生了一个完全独立的进程(它不会产生任何窗口,或者显示stdin / stdout的迹象)。

如果我改用它:

$ /cygdrive/c/pydir/python.exe -i /cygdrive/c/pydir/ipython-script.py

一开始很令人兴奋,但你很快意识到ipython与终端的关系并不合适。没有readline支持,光标控制不佳,stdin似乎处理典型的python,但是没有[out]提示(虽然“print”会吐出文本),像backspace / enter / tab这样的简单事情似乎完全被破坏了(光标)是非常挑衅的,没有什么像维护一个ncurse缓冲区(你只需键入ipy命令提示)。 一旦我放弃了会话,退出就成了另一个问题。我可以返回bash提示符,但我没有标准输入。事实证明,总是有一个挂起的python.exe进程必须从Windows端被杀死(并且它不会释放stdin直到它死掉)。

是否有以这种方式运行Ipython的快速修复或替代方法?我可以使用cygwin二进制文件完成大部分开发工作,但是能够运行win32二进制文件交互操作在调试/测试win32特定python库时会有很大帮助。


P.S。::::我真的需要制表完成并清理输出。我试图通过一堆COM接口,并且我可以获得的唯一方法是使用交互式ipy会话。

P.S。::::我使用的是64位Cygwin和32位win32 python。这可能是简单的不匹配吗?

1 个答案:

答案 0 :(得分:3)

在cygwin中运行win32 IPython.exe可执行文件充其量是个问题。最好运行cygwin Ipython版本。根据您需要的库,这可以正常工作。但是如果你需要使用win32编译库,cygwin Ipython将无法工作(据我所知)。

总的来说,我仍然在为Windows中的ipython提供愉快的终端体验。没有一个解决方案“正常”。我有3种不同的方式与IPython交互,这取决于我需要完成的工作。

  1. 使用cmd.exe(或Console.exe)并运行win32 ipython。这是vim + ipython工作流程的最佳方式(在我看来)。这是非常实用和快速的。它会伤害你的眼睛,但仍缺乏良好的“终端”体验......但如果你需要通过一些工作,它将完成工作。额外奖励:似乎有一些额外的ipy%魔法在这个工作流程中工作得更好。

  2. 使用cygwin和cygwin附带的ipython包。你失去了“本机”win32支持,但是如果你通常只需要标准库,那么看起来会更好,感觉更好(假设你一直使用CygwinX并运行你最喜欢的终端)。

  3. 使用win32 Ipython,让QTConsole正常工作。如果您在Windows中并且尚未尝试过QTConsole,请立即开始使用并花一点时间进行设置。它可以非常快速和令人愉快(字体不会伤到我的眼睛!),并且它具有很多功能。它最大的缺点是:它没有很好地处理一些%魔法(比如%编辑,所以我丢失了我的vim + ipython工作流),它没有很好地处理系统后台进程,并且它不会像你一样处理stdin / stdout会想。但是,如果你将QTConsole与cmd.exe ipython结合起来,给它一点练习+耐心,你可以得到一个相当不错的“控制台”开发工作流程。