Python不使用过时的.pyc来解释已更改的文件

时间:2011-04-12 00:41:27

标签: python google-app-engine bytecode pyc

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

错误消息实际上引用了最新源的正确行。除非行的位置发生变化,否则它会引用先前发生错误的地方的行。

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

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

3 个答案:

答案 0 :(得分:2)

你检查过系统时钟了吗?我相信python根据时间戳确定是否使用.pyc或.py。如果您的系统时钟被推回,那么它会看到.pyc文件更新,直到系统时钟赶上它们的最后一次构建。

答案 1 :(得分:2)

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

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

它选择使用.pyc文件的事实指出.py文件的修改日期较旧。只有当.py文件在另一个系统上被修改然后被复制到要使用它的那个文件并且编辑环境/系统的时钟被设置在运行时环境/系统的时钟后面时才有可能。

答案 2 :(得分:0)

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

  1. 从“应用程序”文件夹中删除GoogleAppEngineLauncher。
  2. 重命名文件〜/ Library / Application Support / GoogleAppEngineLauncher / Projects.plist(例如Project.plist.backup
  3. 重命名文件〜/ Library / Preferences / com.google.GoogleAppEngineLauncher.plist(例如com.google.GoogleAppEngineLauncher.plist.backup)
  4. 再次下载并安装Google App Engine Launcher。
  5. 使用“文件”,“添加现有应用程序...”再次添加项目,不要忘记设置之前设置的任何标记。
  6. 或者它甚至可以启动GAEL一次,关闭它并将备份的首选项文件放回原位,以避免重新配置。

    编辑:原来是修复它......暂时。调试不是一个非常简单的问题。 奇怪的是,从命令行运行appserver时它可以正常工作,例如

    dev_appserver.py testproject/ -p 8082 --debug