我最近回到了一個不得不停止約6個月的項目,重新安裝操作系統並重新啓動後,我遇到了各種瘋狂的事情發生。我確保安裝我之前使用的相同版本(2.6)的python。Python模塊在重新啓動主模塊後沒有更新
它開始給我奇怪的tkinter錯誤,我以前沒有遇到過麻煩,程序相對簡單,當我退出時我留下了2個或3個錯誤,我記錄了並且與接口。
即使在我刪除了違規的代碼段之後,同樣的錯誤也會彈出,事情就變得更加怪異。實際上,回溯指向的是它所引用的模塊中不存在的一條線,例如:當模塊只有200行時,第262行。
在爲主模塊啓動一個全新的文件並複製/粘貼之後,終於認識到有問題的代碼已經不存在了,並且我停止收到錯誤,結果發現我在另一個模塊中創建的代碼沒有任何更新, t通過shell重新啓動程序時顯示。 (我沒有忘記保存。)在擺弄這個之後,當然,舊的界面錯誤回來了,只是在以前工作的不同部分的代碼中。
事實上,如果我恢復到六個月前的文件,程序工作正常。但是,只要我在主模塊中更改了任何內容,接口錯誤就會恢復。
這裏是原來的錯誤:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\PyStuff\interface.py", line 202, in dispOne
__main__.top.destroy()
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1938, in destroy
self.tk.call('destroy', self._w)
TclError: can't invoke "destroy" command: application has been destroyed
我猜別的東西是怎麼回事,這裏比我自己可憐的編程等。有人有主意嗎?
編輯:回想起來,我相信我讀了一些關於通過IDLE的shell運行Tkinter程序的不好主意,至少看起來,如果我通過雙擊啓動主模塊,TclError消失了.pyc文件。也許我的問題只是加上Chris Atlee和Vlad在下面提到的時間戳/ PYTHONPATH問題的組合。
我沒有設置PYTHONPATH,並且設置到目錄的Python路徑導致tkinter錯誤彈出,就像打印sys.path一樣。需要說明的是:如果我將舊版(6個月前)版本的程序(只是.py文件)複製到一個新目錄中,並通過shell從該目錄運行,該程序可以正常工作。如果我在主模塊的開頭添加了「Print'hello'」,那麼我一旦點擊程序界面上的按鈕就會顯示前面引用的tkinter錯誤。 – Ian 2010-05-04 05:47:53
所以當你剛啓動python解釋器並打印出sys.path時會發生什麼,你會得到任何類型的輸出嗎? – Vlad 2010-05-04 20:09:28
哦,我明白了,對不起。 但是,一切看起來都很好。只是當前目錄加上python26目錄。 – Ian 2010-05-04 23:32:58