2

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

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

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

我怎样才能找到问题的根本原因?

4

3 回答 3

2

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

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

它选择 .pyc 文件以供使用的事实表明您的 .py 文件具有较旧的修改日期。仅当您的 .py 文件在不同的系统上被修改然后被复制到要使用它的系统并且编辑环境/系统的时钟设置在运行时环境/系统的时钟之后时,这才有可能。

于 2011-04-12T01:17:04.747 回答
2

你检查过你的系统时钟吗?我相信 python 根据时间戳确定是使用 .pyc 还是 .py 。如果您的系统时钟被推迟,那么它会将 .pyc 文件视为较新的文件,直到系统时钟赶上它们上次构建的时间。

于 2011-04-12T01:09:11.430 回答
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. 使用“文件”、“添加现有应用程序...”再次添加您的项目,不要忘记设置您之前设置的任何标志。

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

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

dev_appserver.py testproject/ -p 8082 --debug
于 2011-05-31T19:55:00.733 回答