使用Google App Engine在python中進行開發,昨天它停止運行當前版本的腳本。 而不是執行最新版本,即使.py源被更改,它似乎也運行以前預編譯的.pyc。Python不解釋已更改的文件,使用過時的.pyc
錯誤消息實際上引用了最新來源的正確行。除了該行的位置改變之外,它會引用之前發生錯誤的行。
刪除.pyc文件會導致它們從當前版本重新創建。現在刪除所有的.pycs是一個糟糕的解決方法。
我該如何找到問題的根本原因?
使用Google App Engine在python中進行開發,昨天它停止運行當前版本的腳本。 而不是執行最新版本,即使.py源被更改,它似乎也運行以前預編譯的.pyc。Python不解釋已更改的文件,使用過時的.pyc
錯誤消息實際上引用了最新來源的正確行。除了該行的位置改變之外,它會引用之前發生錯誤的行。
刪除.pyc文件會導致它們從當前版本重新創建。現在刪除所有的.pycs是一個糟糕的解決方法。
我該如何找到問題的根本原因?
以下步驟暫時解決了問題:
另外它甚至可能會啓動GAEL一次,關閉它,將備份的首選項文件放回原位以避免重新配置。
編輯:原來,修復它......暫時。調試不是一個非常簡單的問題。 //timezones.appspot: 古怪足夠它運行在命令行應用程序服務器時,如
dev_appserver.py testproject/ -p 8082 --debug
你檢查了你的系統時鐘嗎?我相信Python決定是否使用基於時間戳的.pyc或.py。如果您的系統時鐘被推回,那麼它會將.pyc文件視爲新的,直到系統時鐘被捕獲到最後一次構建時爲止。
感謝您的提示。檢查系統時間,我會按順序查找所有內容,以及文件上的日期。它們在.pyc和.py上都是正確的。此外,如果我更改.py時間更新正確。 – Riley 2011-04-14 08:36:19
您是否正在編輯與正在編譯的系統不同的系統上的.py文件?
如果修改日期比.pyc文件的修改日期更新,編譯器會重新編譯.py文件。
事實上,它選擇使用.pyc文件指向您的.py文件具有較早修改日期的事實。這隻有在您的.py文件在其他系統上被修改,然後被複制到將被使用並且編輯環境/系統時鐘被設置在運行時環境/系統時鐘之後的情況下才有可能。
這一切都在一個系統上。我檢查了時間戳,並在編輯文件時正確更新了時間戳。不知道我可以檢查下一個:( – Riley 2011-04-14 08:37:43
我現在懷疑,它可能使用,而不是本地時間(UTC HTTP與谷歌應用程序引擎做的工作。 COM /)。儘管如此,我沒有在互聯網上找到任何有關這個問題的參考。 通過Google App Engine啓動器停止應用並重新啓動它也是一項功能強大但麻煩的解決方法。 – Riley 2011-05-31 19:35:04