[英]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.