我使用的是IPython as a system shell。IPython - 在shell命令失敗時引發異常
有沒有辦法讓IPython在shell命令失敗時引發異常? (非零退出代碼)
默認設置會使它們無提示失敗。
我使用的是IPython as a system shell。IPython - 在shell命令失敗時引發異常
有沒有辦法讓IPython在shell命令失敗時引發異常? (非零退出代碼)
默認設置會使它們無提示失敗。
自IPython
起4.0.1,!cmd
轉換爲get_ipython().system(repr(cmd))
(IPython.core.inputtransformer._tr_system()
)。 在來源中,它實際上是InteractiveShell.system_raw()
,因爲inspect.getsourcefile()
和inspect.getsource()
可以告訴。
它在Windows中代表os.system()
,在其他操作系統中代表subprocess.call()
。不可配置,正如您從代碼中看到的那樣。
因此,您需要將其替換爲subprocess.check_call()
。
除了用手修補猴子,這可以用IPython configuration system完成。可用選項(可通過%config
魔法查看)不允許用另一個類替換TerminalInteractiveShell
,但幾個TerminalIPythonApp
選項允許在啓動時執行代碼。
請仔細檢查你是否真的需要這雖然:一看通過system_raw()
的來源表明,它集_exit_code
變量 - 所以它實際上並沒有失敗完全默默。