2011-04-12 72 views
2

使用Google App Engine在python中进行开发,昨天它停止运行当前版本的脚本。 而不是执行最新版本,即使.py源被更改,它似乎也运行以前预编译的.pyc。Python不解释已更改的文件,使用过时的.pyc

错误消息实际上引用了最新来源的正确行。除了该行的位置改变之外,它会引用之前发生错误的行。

删除.pyc文件会导致它们从当前版本重新创建。现在删除所有的.pycs是一个糟糕的解决方法。

我该如何找到问题的根本原因?

+0

我现在怀疑,它可能使用,而不是本地时间(UTC HTTP与谷歌应用程序引擎做的工作。 COM /)。尽管如此,我没有在互联网上找到任何有关这个问题的参考。 通过Google App Engine启动器停止应用并重新启动它也是一项功能强大但麻烦的解决方法。 – Riley 2011-05-31 19:35:04

回答

0

以下步骤暂时解决了问题:

  1. 从您的应用程序文件夹中删除GoogleAppEngineLauncher。
  2. 重命名文件〜/库/ Application Support/GoogleAppEngineLauncher/Projects.plist(如Project.plist.backup
  3. 重命名文件〜/库/首选项/ com.google.GoogleAppEngineLauncher.plist(如com.google。 GoogleAppEngineLauncher.plist.backup)
  4. 再次下载并安装Google App Engine启动器
  5. 使用“文件”,“添加现有应用程序...”再次添加项目,不要忘记设置之前设置的任何标志。

另外它甚至可能会启动GAEL一次,关闭它,将备份的首选项文件放回原位以避免重新配置。

编辑:原来,修复它......暂时。调试不是一个非常简单的问题。 //timezones.appspot: 古怪足够它运行在命令行应用程序服务器时,如

dev_appserver.py testproject/ -p 8082 --debug 
2

你检查了你的系统时钟吗?我相信Python决定是否使用基于时间戳的.pyc或.py。如果您的系统时钟被推回,那么它会将.pyc文件视为新的,直到系统时钟被捕获到最后一次构建时为止。

+0

感谢您的提示。检查系统时间,我会按顺序查找所有内容,以及文件上的日期。它们在.pyc和.py上都是正确的。此外,如果我更改.py时间更新正确。 – Riley 2011-04-14 08:36:19

2

您是否正在编辑与正在编译的系统不同的系统上的.py文件?

如果修改日期比.pyc文件的修改日期更新,编译器会重新编译.py文件。

事实上,它选择使用.pyc文件指向您的.py文件具有较早修改日期的事实。这只有在您的.py文件在其他系统上被修改,然后被复制到将被使用并且编辑环境/系统时钟被设置在运行时环境/系统时钟之后的情况下才有可能。

+0

这一切都在一个系统上。我检查了时间戳,并在编辑文件时正确更新了时间戳。不知道我可以检查下一个:( – Riley 2011-04-14 08:37:43