2013-07-19 74 views
5

我真的很想在一個合適的終端和cygwin提供的shell(mintty或rxvt會很棒)中交互地運行我的Win7 ipython。從cygwin交互式運行win32 ipython二進制文件

我用python取得了一些成功,但IPython並沒有真正的合作。如果我們運行這個距離的rxvt bash提示符:

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

我結束了一個相當成功的Python交互式會話。但是香草蟒並不像IPython那麼棒。於是我嘗試這個辦法:

$ /cygdrive/c/pydir/ipython.exe 

和程序只有幾個街區的bash提示符,似乎產卵一個完全獨立的過程(不產生任何窗口,或標準輸入/輸出的顯示標誌)。

相反,如果我用這個:

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

這是令人興奮的在第一,但,你就會發現IPython中沒有正確與終端參與。沒有readline支持,遊標控制不佳,stdin似乎處理典型的python,但沒有[out]提示(儘管「prints」會吐出文本),像backspace/enter/tab這樣簡單的東西似乎完全被破壞了(遊標是非常無恥的),沒有任何東西像一個正在維護的緩衝區緩衝區(你可以通過ipy命令提示符輸入)。 一旦我放棄了會議,退出就成了另一個問題。我可以返回到bash提示符,但我沒有標準輸入。事實證明,總是有一個python.exe進程掛起,必須從Windows端殺死(並且它不會釋放stdin直到它死掉)。

是否有快速修復或替代方法來以這種方式運行Ipython?我可以使用cygwin二進制文件來完成大部分的開發工作,但是能夠運行win32二進制文件交互將在調試/測試win32特定的python庫時起到巨大的幫助作用。


P.S。::::我真的需要Tab完成和清理輸出。我試圖通過一堆COM接口來實現我的方式,並且我可以在任何地方獲得的唯一方法是使用交互式ipy會話。

P.S。::::我使用64位Cygwin和32位win32 python。這可能是簡單的不匹配?

+0

也許這是我應該在Windows端使用ipython內核,然後使用cygwin二進制文件提供前端? – user2097818

+0

我從那以後解決了你的問題嗎? – nowox

+0

@nowox檢查我的答案。我在下面有一個答案,但不是一個很好的解決方案。我通常使用的解決方案已列出,您必須自己決定哪種方法更適合您。 – user2097818

回答

3

運行win32 cygwin中的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,那麼馬上去做吧,花一點時間來設置它。它可以是非常快速和愉快的(字體不會傷害我的眼睛!),並且它具有特徵。它的最大缺點是:它不能很好地處理一些魔術(比如%編輯,所以我失去了我的vim + ipython工作流程),它不會很好地處理系統後臺進程,並且它不會像你一樣處理stdin/stdout會想。但是,如果將QTConsole與cmd.exe ipython結合使用,並給它一點練習+耐心,那麼您可以獲得相當體面的「控制檯」開發工作流程。