當模塊我愛IPython的,但我已經發現了%運行的一個問題:導入模塊時運行%重複調用,不會重新加載。IPython的:重新導入使用%運行
假設文件ex1.py包含行:
import ex2
ex2.x.append(1)
print ex2.x
和文件ex2.py包含:
x = []
現在,從命令行運行蟒ex1.py反覆打印[1]每次。但是,從內調用%run ex1.py
IPython的反覆打印[1],[1,1],[1,1,1],等等,這是因爲模塊ex2.py不重新加載。所以我們有一個問題:ipython運行腳本協議並不反映「真實世界」的行爲。
注:
%load_ext autoreload
%autoreload 2
不不幫助。這些行會是否改變已到ex2.py文件所做的得到ex2.py只有重新加載。如果我們沒有做出任何改變,或者只是對ex1.py進行修改,我們會得到不希望的行爲。
有沒有什麼辦法讓跑%表現喜歡這裏的命令行?使用ipython作爲腳本的測試環境似乎是一個真正的缺陷。 (或者道義上,一個模塊不應該寫入另一個模塊的名稱空間?)