使用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