昨天使用 Google App Engine 在 python 中开发它停止运行当前版本的脚本。即使 .py 源已更改,它似乎也运行先前预编译的 .pyc ,而不是执行最新版本。
错误消息实际上引用了最新源中的正确行。除非行的位置发生了变化,否则它会引用先前发生错误的位置的行。
删除 .pyc 文件会导致从当前版本重新创建它们。删除所有 .pycs 目前是一个糟糕的解决方法。
我怎样才能找到问题的根本原因?
昨天使用 Google App Engine 在 python 中开发它停止运行当前版本的脚本。即使 .py 源已更改,它似乎也运行先前预编译的 .pyc ,而不是执行最新版本。
错误消息实际上引用了最新源中的正确行。除非行的位置发生了变化,否则它会引用先前发生错误的位置的行。
删除 .pyc 文件会导致从当前版本重新创建它们。删除所有 .pycs 目前是一个糟糕的解决方法。
我怎样才能找到问题的根本原因?
您是否在与编译它们的系统不同的系统上编辑 .py 文件?
如果 .py 文件的修改日期比 .pyc 文件的修改日期新,则编译器会重新编译 .py 文件。
它选择 .pyc 文件以供使用的事实表明您的 .py 文件具有较旧的修改日期。仅当您的 .py 文件在不同的系统上被修改然后被复制到要使用它的系统并且编辑环境/系统的时钟设置在运行时环境/系统的时钟之后时,这才有可能。
你检查过你的系统时钟吗?我相信 python 根据时间戳确定是使用 .pyc 还是 .py 。如果您的系统时钟被推迟,那么它会将 .pyc 文件视为较新的文件,直到系统时钟赶上它们上次构建的时间。
以下步骤暂时解决了该问题:
或者,它甚至可以启动 GAEL 一次,关闭它并将备份的首选项文件放回原位,以避免重新配置。
编辑:原来修复它......暂时。不是一个非常容易调试的问题。奇怪的是,它在从命令行运行 appserver 时可以工作,例如
dev_appserver.py testproject/ -p 8082 --debug