谷歌应用程序引擎&x2B;python(django)部署错误:加载MySQLdb模块时出错

谷歌应用程序引擎&x2B;python(django)部署错误:加载MySQLdb模块时出错,python,django,google-app-engine,mysql-python,Python,Django,Google App Engine,Mysql Python,我正在谷歌应用程序引擎上创建一个应用程序。我正在使用Django 1.4和Python 2.7。在本地主机上一切正常。但在部署之后,它没有运行,我一直在管理员日志上看到: 2012-12-15 15:02:41.870 /base/python27_runtime/python27_lib/versions/1/lib/cacerts/urlfetch_cacerts.txt missing; without this urlfetch will not be able to

我正在谷歌应用程序引擎上创建一个应用程序。我正在使用Django 1.4和Python 2.7。在本地主机上一切正常。但在部署之后,它没有运行,我一直在管理员日志上看到:

    2012-12-15 15:02:41.870

    /base/python27_runtime/python27_lib/versions/1/lib/cacerts/urlfetch_cacerts.txt missing; without this urlfetch will not be able to validate SSL certificates.

    W 2012-12-15 15:02:41.870

    No ssl package found. urlfetch will not be able to validate SSL certificates.

    E 2012-12-15 15:02:46.086

    Traceback (most recent call last):
      File "/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 196, in Handle
        handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
      File "/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 266, in _LoadHandler
        __import__(cumulative_path)
      File "/base/data/home/apps/s~cloudwallforever/1.363864476397206865/djangoappengine/main/__init__.py", line 28, in <module>
        setup_env()
      File "/base/data/home/apps/s~cloudwallforever/1.363864476397206865/djangoappengine/boot.py", line 82, in setup_env
        setup_logging()
      File "/base/data/home/apps/s~cloudwallforever/1.363864476397206865/djangoappengine/boot.py", line 130, in setup_logging
        if not settings.DEBUG:
      File "/base/data/home/apps/s~cloudwallforever/1.363864476397206865/django/utils/functional.py", line 276, in __getattr__
        self._setup()
      File "/base/data/home/apps/s~cloudwallforever/1.363864476397206865/django/conf/__init__.py", line 42, in _setup
        self._wrapped = Settings(settings_module)
      File "/base/data/home/apps/s~cloudwallforever/1.363864476397206865/django/conf/__init__.py", line 87, in __init__
        mod = importlib.import_module(self.SETTINGS_MODULE)
      File "/base/data/home/apps/s~cloudwallforever/1.363864476397206865/django/utils/importlib.py", line 35, in import_module
        __import__(name)
      File "/base/data/home/apps/s~cloudwallforever/1.363864476397206865/settings.py", line 6, in <module>
        import django.db.backends.mysql.base
      File "/base/data/home/apps/s~cloudwallforever/1.363864476397206865/django/db/backends/mysql/base.py", line 14, in <module>
        raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
    ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
2012-12-15 15:02:41.870
/缺少base/python27_runtime/python27_lib/versions/1/lib/cacerts/urlfetch_cacerts.txt;没有此urlfetch将无法验证SSL证书。
W 2012-12-15 15:02:41.870
找不到ssl包。urlfetch将无法验证SSL证书。
E 2012-12-15 15:02:46.086
回溯(最近一次呼叫最后一次):
Handle中的文件“/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py”,第196行
handler=\u config\u handle.add\u wsgi\u中间件(self.\u LoadHandler())
LoadHandler中的文件“/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py”,第266行
__导入路径(累积路径)
文件“/base/data/home/apps/s~cloudwallforever/1.363864476397206865/djangappengine/main/__init___.py”,第28行,在
设置_env()
文件“/base/data/home/apps/s~cloudwallforever/1.363864476397206865/djangAppEngine/boot.py”,第82行,位于安装环境中
设置日志记录()
文件“/base/data/home/apps/s~cloudwallforever/1.363864476397206865/djangAppEngine/boot.py”,第130行,在安装日志中
如果不是settings.DEBUG:
文件“/base/data/home/apps/s~cloudwallforever/1.363864476397206865/django/utils/functional.py”,第276行,在__
self.\u设置()
文件“/base/data/home/apps/s~cloudwallforever/1.363864476397206865/django/conf/_init__uuuu.py”,第42行,在安装程序中
自包装=设置(设置模块)
文件“/base/data/home/apps/s~cloudwallforever/1.363864476397206865/django/conf/_init__uuuuuu.py”,第87行,在_uinit中__
mod=importlib.import\u模块(自我设置\u模块)
导入模块中的文件“/base/data/home/apps/s~cloudwallforever/1.363864476397206865/django/utils/importlib.py”,第35行
__导入(名称)
文件“/base/data/home/apps/s~cloudwallforever/1.363864476397206865/settings.py”,第6行,在
导入django.db.backends.mysql.base
文件“/base/data/home/apps/s~cloudwallforever/1.363864476397206865/django/db/backends/mysql/base.py”,第14行,在
raise配置不正确(“加载MySQLdb模块时出错:%s”%e)
配置不正确:加载MySQLdb模块时出错:没有名为MySQLdb的模块

你知道为什么会这样吗?

正如上面明确指出的,你应该使用
“google.appengine.ext.django.backends.rdbms”
作为你的数据库引擎设置。

django支持”文档提示了解决方案,但没有明确说明:

由于标准的django.db.backends.mysql后端在内部使用MySQLdb,app.yaml必须在库列表中引用MySQLdb

将以下内容添加到app.yaml似乎可以解决这个问题:

libraries:
- name: MySQLdb
  version: "latest"

请注意,MySQLdb当前未包含在列表中。我一时兴起就尝试了它,它似乎已经解决了我的问题,YMMV。

如果在将以下内容添加到你的应用程序后它不起作用。yaml:

libraries:
- name: MySQLdb
  version: "latest"
…然后采取以下步骤:

  • 确保MySQLdb已在Mac上安装
    pip安装mysql python
  • 确保GAE devserver指向您的virtualenv/pip的python 2.7安装,而不是Mac/*nix的默认版本,因为pip可能没有在那里安装它。我通过更新GAE devserver以使用:
    /usr/local/bin/python2.7
    解决了
    找不到模块:MySQLdb
    ,例如在
  • 注意:可通过应用程序菜单访问首选项:

    • 如果您使用的是Windows:请查看
      文件>首选项…
    • 如果您正在使用Mac,请查看
      GoogleAppengineLauncher>Preferences…

    您是否知道不能在App Engine上使用MySql?至少在App Engine本身上,你可以在其他地方使用mysql服务器。谢谢,我忘了从mysql中删除一个导入。为了避免混淆其他人-这不是dev server的设置-对productionP.S说
    django.db.backends.mysql
    ,我知道OP不打算在AppEngine上使用mysql,但对于云SQL,这现在是一种受支持的配置(目前在预览中)。这个问题是谷歌搜索“appengine配置不正确:加载MySQLdb模块时出错:没有名为MySQLdb的模块”的热门问题,所以希望这个解决方案能对其他试图在appengine上使用MySQLdb的人有用。这并没有解决我的问题。我仍然会在我的GAE dev服务器上收到
    配置不当:加载MySQLdb模块时出错:没有名为MySQLdb的模块
    错误。我尝试了
    latest
    以及
    1.2.5
    。GAE devserver首选项窗格在哪里?它们在应用程序菜单下。我编辑了这篇文章来澄清这一点!GoogeAppEngineLauncher是一个命令行工具还是有一个实际的GUI?我只记得安装GoogleCloudSDK是为了安装GAE。