5

我真的很想在 cygwin 提供的适当终端和 shell 中以交互方式运行我的 Win7 ipython(mintty 或 rxvt 会很棒)。

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

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

我最终得到了一个相当成功的 python 交互式会话。但是 vanilla 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] 提示(尽管“打印”确实会吐出文本),简单的东西,如退格/回车/制表符似乎完全坏了(光标非常挑衅),没有什么比维护 ncurse 缓冲区(您可以在 ipy 命令提示符下键入)。一旦我放弃了会话,退出就成为另一个问题。我可以返回到 bash 提示符,但我没有标准输入。事实证明,总是有一个 python.exe 进程挂起,必须从 Windows 端杀死(并且它不会释放标准输入,直到它死掉)。

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


PS:::: 我真的需要制表符完成和干净的输出。我试图通过一堆 COM 接口拼凑出我的方式,而我可以到达任何地方的唯一方法是使用交互式 ipy 会话。

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

4

1 回答 1

3

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

总的来说,我仍然在努力在 Windows 中使用 ipython 获得愉快的终端体验。没有一种解决方案可以“正常工作”。根据我需要完成的工作,我有 3 种不同的方式与 IPython 交互。

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

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

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

于 2013-12-07T16:17:50.060 回答