想出了以下解决方案:
获取 django 1.1 并将其放在您的项目根目录下。
将一个空文件“non_gae_indicator”添加到您的项目根文件夹。
将 django 和 non_gae_indicator 添加到您的app.yaml skip_files 元素中:
skip_files:
- ^(.*/)?app\.yaml
- ^(.*/)?app\.yml
- ^(.*/)?index\.yaml
- ^(.*/)?index\.yml
- ^(.*/)?#.*#
- ^(.*/)?.*~
- ^(.*/)?.*\.py[co]
- ^(.*/)?.*/RCS/.*
- ^(.*/)?\..*
- ^(.*/)?.*\.bak$
- ^django
- ^non_gae_indicator
现在我们有办法判断我们是在 GAE-sdk 下运行还是在 live 下运行 - 因为 non_gae_indicator 在我们 live 时将不可用。
所以在 main.py 你可以这样做:
if not os.path.exists(os.path.abspath(os.path.dirname(__file__)) + '/non_gae_indicator'):
# GAE
from google.appengine.dist import use_library
use_library('django', '1.1')
else:
# Not GAE - Add our django package to the path
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)) + '/django')
您应该使用 --allow_skipped_files 标志运行您的本地 SDK 服务器(否则在检查它们时跳过的文件似乎不存在 - 服务器控制台会发出警告)。