2010-10-05 51 views
3

我希望代碼更改在開發過程中立即生效。如何檢測已更改的文件並在正在運行的Python(2.7)應用程序中重新加載它們?用Python重新加載/交換

編輯:

讀通過「伊沃·範德Wijk」鏈接到的網頁後,我覺得這是最好的時候更改代碼重新啓動Web應用程序 - 像Django的一樣。所以實際的問題是:How to monitor file modifications?

回答

3

這個問題已經被問anumberoftimes

你可以使用這個重載(模塊),但討厭的副作用要小心了。例如,現有的代碼將基於原始代碼,它不會奇蹟般地獲得新的屬性或添加的基類。

2

這對大多數應用程序沒有意義,因爲您將通過使用reload獲得副作用。此外,您花費在檢測更改和重新加載所有模塊的代碼上可能花費在重新啓動應用程序上。如果您導入大量模塊或者包含許多子模塊的項目,這會非常複雜。

在某些情況下,這是個好主意。 Django Web框架提供了一個開發服務器(manage.py runserver),可自動重新加載更改後的模塊。查看django.utils.autoreload - 它使用文件的修改時間測試所有Python文件以進行修改。如前所述,這對於某些應用程序來說只是一個好主意。 Web應用程序有些是無狀態的,因此可以重新加載幾乎沒有副作用。

+2

Django在模塊更改時重新加載整個程序。重新加載單個模塊是非常危險的,尤其是因爲您在開發過程中正在執行這些模塊,因爲它會導致您遇到的問題混入到您正在嘗試修復的實際錯誤中,從而嚴重影響問題的解決。 – 2010-10-05 11:33:58

6

我想爲我的一些Python腳本提供相同的效果,所以我繼續製作腳本SourceChangeMonitor.py。您可以通過說明here找到它。如果你只是想要腳本,here是一個直接鏈接