7

我有这段代码在本地主机上完美运行,但在 GAE 上抛出了这个模糊的错误:

import_string() failed for 'webapp2_extras.appengine.auth.models.User' . Possible reasons are: - missing __init__.py in a package; - package or module

我的进口声明:

from webapp2_extras import auth
from webapp2_extras import sessions
from webapp2_extras.auth import InvalidAuthIdError   
from webapp2_extras.auth import InvalidPasswordError

auth's用户模型的使用:

user = self.auth.store.user_model.create_user(username, password_raw = password, email = email)
if not user[0]: #returns a tuple with [boolean, user_info]
    return 'Create user error'
else:
    self.set_flash("Thank you for registering. Please login!")
    self.redirect(self.auth_config['login_url'])

完整代码

更新(完整堆栈跟踪)

import_string() failed for 'webapp2_extras.appengine.auth.models.User'. Possible reasons are:

- missing __init__.py in a package;
- package or module path not included in sys.path;
- duplicated package or module name taking precedence in sys.path;
- missing module, class, function or variable;

Original exception:

ImportError: No module named ndb

Debugged import:

- 'webapp2_extras' found in '/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2_extras/__init__.pyc'.
- 'webapp2_extras.appengine' found in '/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2_extras/appengine/__init__.pyc'.
- 'webapp2_extras.appengine.auth' found in '/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2_extras/appengine/auth/__init__.pyc'.
- 'webapp2_extras.appengine.auth.models' not found.
Traceback (most recent call last):
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1511, in __call__
    rv = self.handle_exception(request, response, e)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1505, in __call__
    rv = self.router.dispatch(request, response)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher
    return route.handler_adapter(request, response)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1077, in __call__
    return handler.dispatch()
  File "/base/data/home/apps/s~webapp-auth/1.358936463581927371/main.py", line 34, in dispatch
    response = super(BaseHandler, self).dispatch()
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 547, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 545, in dispatch
    return method(*args, **kwargs)
  File "/base/data/home/apps/s~webapp-auth/1.358936463581927371/main.py", line 127, in post
    user = self.auth.store.user_model.create_user(username, password_raw = password, email = email)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 701, in __get__
    value = self.func(obj)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2_extras/auth.py", line 131, in user_model
    cls = self.config['user_model'] = webapp2.import_string(cls)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1824, in import_string
    return getattr(__import__(module, None, None, [obj]), obj)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2_extras/appengine/auth/models.py", line 13, in <module>
    from ndb import model
4

1 回答 1

12

看起来类似于webapp 2.5.1 已经修复的这个问题

通过将这些行添加到 app.yaml 文件中,确保导入最新版本的 webapp2:

libraries:
- name: webapp2
  version: latest

作为一种解决方法,您可以将以下行添加到您的应用程序中:

 import sys
 from google.appengine.ext import ndb
 sys.modules['ndb'] = ndb
于 2012-05-16T15:37:32.080 回答