最近幾年,jupyter在全球數據科學領域,已經成爲不可或缺的重要工具。
在jupyter中用python寫程序,若import了自己寫的外部模塊,如果這個外部模塊有更新,再次執行import,jupyter是不會重新導入的。一般的做法是先restart整個jupyter文檔,再重新執行代碼,以確保所有導入的外部模塊都是最新的。但這種做法太麻煩,效率也不高。
網上搜“jupyter auto reload”,目前搜到的主要是ipython的%load_ext
,這在jupyter下並不適用;也搜到了reload
,但發現在不同版本的jupyter下也有問題。
現在看來,這個問題雖然簡單,但目前網上的solution還不是很容易檢索到,所以值得在這裏記錄一下。
在jupyter下實現模塊重新加載(每一次運行import,都導入模塊最新的代碼),有三種方式:
- 對於 Python2.x
import some_module
reload(some_module)
- 對於 Python 3.2 and 3.3:
import some_module
import importlib
importlib.reload(some_module)
- 對於 Python3.4+
import some_module
import imp
imp.reload(some_module)
參考: