Python里不可能不用import(当然我还真知道有同学以为Python鼓励单文件)

但是在GAE的生产环境下(不是在SDK的launcher里),import的行为被更改了,但好像没在文档里提到。

1、优先载入系统环境,而非项目环境的module
这个问题给段代码好理解

假设你在项目中不幸有一个locale.py,然后你不知道系统里也有个locale模块,于是幸手写下

import locale

在本地是不存在任何问题的,但到GAE上就会出问题。因为此时import不是你的locale.py,而是系统的locale模块。这点和标准的Python行为是不一样的。

解决办法当然是换个名字……

2、当前路径不符合标准

还是举例子

项目里有两层目录,application目录里有lib和views两个目录,views下面有个login.py,lib里有个oauth.py。所有目录都有__init__.py初始化为模块。

在login.py里使用

from lib import oauth

在本地没有问题,在GAE上提示找不到oauth这个模块……

改成

from ..lib import oauth

后正常……