2012-10-10 55 views
2

我正在使用IDLE編寫幾個小型Python程序。有兩個類文件 - node.py(節點類)和position.py(位置類)。我有main.py中的主要模塊代碼,我從中實例化Node和Position對象。IDLE Python未檢測到更改

我已經注意到的是 - 當我做出node.py或position.py的變化,檢查模塊,然後使用F5的變化運行它們不被反射回來時,我只要運行main.py所有這些文件在IDLE中打開。我注意到我必須手動關閉所有三個.py文件,然後關閉IDLE,重新開始並運行main.py以查看node.py和position.py中所做的更改。

這裏有什麼問題?我的環境變量沒有正確設置?我已經在網上搜索過,但還沒有找到滿意的答案。

[詳細內容:我在Ubuntu使用IDLE版本2.7.3。所有三個.py文件和相應的.pyc字節代碼文件都在同一個目錄中。這個目錄也出現在sys.path中]

+0

您是否嘗試過重新啓動用Ctrl + F6解釋? –

+0

不,我沒有。你的意思是說我每次修改腳本時都需要這樣做? – user396089

+0

是的,可能工作 - 沒有測試過。你也可以在'main.py中的node.py和position.py的'import'語句下面加上'reload'語句。 –

回答

2

發生了什麼事是我需要使用「導入節點」,但我所用「從節點導入*」從main.py.這阻止了main.py鏈接到更新的節點模塊!

(對不起接受我自己的答案,但可能也有人會後面臨同樣的問題,所以我上傳解決方案)

0

我用按Ctrl + F6馬修Plourde建議。使用Python 3和IDLE,我會打開我的測試文件和核心文件。然後,我會修復我的核心文件中測試文件中由我的斷言報告的錯誤,但測試文件不會看到更改。我唯一的解決辦法是關閉並重新打開,這是一個痛苦。 Ctrl + F6確實有效。我無法在Python3中找到重載功能。

我收回這一說法。使用python3時,如果由於缺少管理員權限或其他安全原因而運行IDLE「-n」,則需要導入imp並使用imp.reload(function)作爲IDLE以獲取對正在編輯的其他python文件的任何更改召回。否則,python不會檢測到更改,並且不會重新加載文件。

http://docs.python.org/3.0/library/imp.html#imp.reload