簡體   English   中英

在使用嵌入式外殼程序時,如何獲取IPython自動重裝魔法以自動加載?

[英]How do I get IPython autoreload magic to load automatcially when using an embedded shell?

我的ipython_config.py包含以下ipython_config.py

print "Test autoreload" #confirm this gets loaded
c = get_config()
c.InteractiveShellApp.extensions = ['autoreload']
c.InteractiveShellApp.exec_lines = ['%autoreload 2']

它似乎適用於普通的ipython會話:

$ ipython
Test autoreload
In [1]: %autoreload 2
In [2]: 

但是,當使用使用IPython.embed()的嵌入式Shell腳本時,自動重裝魔術不再起作用。

例如,在shell.py

from IPython import embed
embed()

這仍然加載我的ipython_config.py,如打印"Test autoreload"所證明的那樣,但是autoreload擴展未加載(沒有%autoreload魔術):

$ python shell.py
Test autoreload
In [1]: %autoreload 2
ERROR: Line magic function `%autoreload` not found.

據我所知,這是一個(已知的)錯誤。 擴展僅在有應用程序的情況下加載,因此在使用embed時不會加載(盡管已讀取配置)。

github上有一個開放的問題可以解決此問題,但從未實現。

代替

from IPython import embed
embed()

用這個

from IPython.frontend.terminal.ipapp import TerminalIPythonApp
app = TerminalIPythonApp.instance()
app.initialize(argv=[])
app.start()

您可以運行python shell.py

In [1]: %autoreload 2

In [2]: 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM