簡體   English   中英

錯誤配置:加載MySQLdb模塊時出錯:沒有名為MySQLdb的模塊

[英]ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

我正在研究Google App Engine項目,並且在嘗試使用MySQL設置基本的Django Admin Site時遇到了問題。 我搜索了有關此問題的信息,但所有看到的人都張貼了有關在本地運行應用程序的交易的信息。 在我的情況下,在Google App Engine中運行該應用程序時出現錯誤。

為了更具體地說明該問題,我的應用程序日志中出現以下錯誤:

ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

這看起來好像還沒有安裝MySQL,這沒有任何意義。 在GAE中,默認情況下應該可以訪問它。 我還有其他問題嗎? 這讓我感到困惑,因為它甚至都沒有給我具體的思路或任何形式的線索。

我瀏覽了Django和CloudSQL的GAE文檔,但似乎沒有什么錯位。 我還看了示例Django應用程序,我的所有內容似乎都沒有與他們那里的內容沖突。

完整的日志在這里:

    E 21:59:53.098 Internal Server Error: /admin/
  Traceback (most recent call last):
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/core/handlers/base.py", line 87, in get_response
      response = middleware_method(request)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/contrib/sessions/middleware.py", line 10, in process_request
      engine = import_module(settings.SESSION_ENGINE)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/importlib.py", line 35, in import_module
      __import__(name)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/contrib/sessions/backends/db.py", line 3, in <module>
      from django.db import IntegrityError, transaction, router
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/db/__init__.py", line 40, in <module>
      backend = load_backend(connection.settings_dict['ENGINE'])
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/db/__init__.py", line 34, in __getattr__
      return getattr(connections[DEFAULT_DB_ALIAS], item)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/db/utils.py", line 92, in __getitem__
      backend = load_backend(db['ENGINE'])
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/db/utils.py", line 24, in load_backend
      return import_module('.base', backend_name)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/importlib.py", line 35, in import_module
      __import__(name)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/db/backends/mysql/base.py", line 16, in <module>
      raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
  ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
E 21:59:53.227 Traceback (most recent call last):
    File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 267, in Handle
      result = handler(dict(self._environ), self._StartResponse)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/core/handlers/wsgi.py", line 241, in __call__
      response = self.get_response(request)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/core/handlers/base.py", line 177, in get_response
      response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/core/handlers/base.py", line 219, in handle_uncaught_exception
      return debug.technical_500_response(request, *exc_info)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/views/debug.py", line 66, in technical_500_response
      html = reporter.get_traceback_html()
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/views/debug.py", line 287, in get_traceback_html
      return t.render(c)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/template/base.py", line 140, in render
      return self._render(context)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/template/base.py", line 134, in _render
      return self.nodelist.render(context)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/template/base.py", line 823, in render
      bit = self.render_node(node, context)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/template/debug.py", line 74, in render_node
      return node.render(context)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/template/debug.py", line 84, in render
      output = self.filter_expression.resolve(context)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/template/base.py", line 599, in resolve
      new_obj = func(obj, *arg_vals)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/template/defaultfilters.py", line 718, in date
      return format(value, arg)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/dateformat.py", line 310, in format
      return df.format(format_string)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/dateformat.py", line 33, in format
      pieces.append(force_unicode(getattr(self, piece)()))
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/dateformat.py", line 214, in r
      return self.format('D, j M Y H:i:s O')
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/dateformat.py", line 33, in format
      pieces.append(force_unicode(getattr(self, piece)()))
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/encoding.py", line 71, in force_unicode
      s = unicode(s)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/functional.py", line 121, in __unicode_cast
      return func(*self.__args, **self.__kw)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/translation/__init__.py", line 86, in ugettext
      return _trans.ugettext(message)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/translation/trans_real.py", line 278, in ugettext
      return do_translate(message, 'ugettext')
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/translation/trans_real.py", line 268, in do_translate
      _default = translation(settings.LANGUAGE_CODE)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/translation/trans_real.py", line 183, in translation
      default_translation = _fetch(settings.LANGUAGE_CODE)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/translation/trans_real.py", line 160, in _fetch
      app = import_module(appname)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/importlib.py", line 35, in import_module
      __import__(name)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/contrib/admin/__init__.py", line 3, in <module>
      from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/contrib/admin/helpers.py", line 2, in <module>
      from django.contrib.admin.util import (flatten_fieldsets, lookup_field,
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/contrib/admin/util.py", line 1, in <module>
      from django.db import models
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/db/__init__.py", line 40, in <module>
      backend = load_backend(connection.settings_dict['ENGINE'])
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/db/__init__.py", line 34, in __getattr__
      return getattr(connections[DEFAULT_DB_ALIAS], item)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/db/utils.py", line 92, in __getitem__
      backend = load_backend(db['ENGINE'])
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/db/utils.py", line 24, in load_backend
      return import_module('.base', backend_name)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/utils/importlib.py", line 35, in import_module
      __import__(name)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.4/django/db/backends/mysql/base.py", line 16, in <module>
      raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
  ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

settings.py的相關部分:

import os

DEBUG = True
TEMPLATE_DEBUG = DEBUG

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'userinformation',
    'USER': 'root',
    'HOST': '/cloudsql/eloquent-ratio-109701:api-instance',
    }
}

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
    'django.template.loaders.eggs.Loader',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

ROOT_URLCONF = 'Chimera.urls'

WSGI_APPLICATION = 'Chimera.wsgi.app'

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.admindocs',
    'API',
)

如果您有任何想法,我將非常感激為我指出正確的方向。 我也可以在這里發布更多重要的源文件。

您是否在app.yaml配置中指定了MySQLdb庫?

GAE對使用Django有一些特定的支持,我強烈建議您仔細閱讀Django支持文檔和Django App示例

更新 -實驗:

我剛剛將其添加到(非Django)應用的.yaml文件的libraries部分:

- name: MySQLdb
  version: "latest"

並將其添加到我的一個處理程序中:

        import MySQLdb
        print MySQLdb.apilevel

在將更改部署到GAE並觸發處理程序后,我得到了以下日志條目(與我的開發服務器上的2.0內容相同):

在此處輸入圖片說明

哪個IMHO證明MySQLdb在GAE中可用,並且可以MySQLdb地導入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM