当我在localhost:8080
工作时,当我打开交互式控制台并执行某些操作时,比如获取Kind
等列表(地址:http://localhost:8080/_ah/admin/interactive
),它会给我这个错误:
<class 'google.appengine.dist._library.UnacceptableVersionError'>: django 1.2 was requested, but 0.96.4.None is already in use
在类似的情况下,这种错误发生了好几次。它会被卡住,直到dev_appserver.py
这是一个错误还是我做错了什么?
我在交互式控制台上所做的示例:
from myapp.models import *
for room in Room.all():
room.update_time = room.create_time
room.put()
注意:
这是我的django_bootstrap
:
import os
import sys
import logging
import __builtin__
from google.appengine.ext.webapp import util
import pickle
sys.modules['cPicle'] =pickle
logging.getLogger().setLevel(logging.INFO)
sys.path.insert(0, os.path.abspath((os.path.dirname(__file__))))
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from google.appengine.dist import use_library
use_library('django', '1.2')
import django.core.handlers.wsgi
def main():
application = django.core.handlers.wsgi.WSGIHandler()
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
答案 0 :(得分:1)
这是由您加载网址的顺序引起的。首先进入管理页面,这会加载0.96,这会在处理程序尝试加载1.2时导致错误。
如果将use_library代码添加到appengine_config.py,则会为每个网址加载1.2。
答案 1 :(得分:0)
根文件夹中的index.ymal
说:
# AUTOGENERATED
# This index.yaml is automatically updated whenever the dev_appserver
# detects that a new type of query is run. If you want to manage the
# index.yaml file manually, remove the above marker line (the line
# saying "# AUTOGENERATED"). If you want to manage some indexes
# manually, move them above the marker line. The index.yaml file is
# automatically uploaded to the admin console when you next deploy
# your application using appcfg.py.
因此,每次打开http://localhost:8080/_ah/admin/datastore
时,此文件都会更新:它仍具有相同的内容,但操作系统上的文件时间戳表示已更新。
我想在这里,由于http://localhost:8080
看到models.py不一样,所以它可以加载它然后无法启动django_bootstrap。
但是,如果我先打开http://localhost:8080/_ah/admin/datastore
然后再打开http://localhost:8080
,它就能正常运行。所以这就是为什么有时我有时会得到错误:它取决于各自的订单网址