2012-12-15 67 views
3

我正在Google App Engine上創建一個應用。我正在使用Django 1.4和Python 2.7。一切工作正常localhost。但部署後它沒有運行,我一直在管理日誌上得到這個:Google應用引擎+ python(django)部署錯誤:加載MySQLdb模塊時出錯

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 

任何想法,爲什麼發生?

+0

您是否知道您無法在App Engine上使用MySql?至少不是App Engine本身,你可以在其他地方使用MySQL服務器。 –

+0

謝謝,我忘了從MYSQL中刪除一個導入。 – JuGi

回答

2

由於Cloud SQL docs明確指出,您應該使用''google.appengine.ext.django.backends.rdbms'作爲您的數據庫引擎設置。

+2

只是爲了避免混淆他人 - 這不是dev服務器的設置 - https://developers.google.com/appengine/docs/python/cloud-sql/django – analytik

+0

https://developers.google.com/appengine/ docs/python/cloud-sql/django#development-settings說明用於生產的'django.db.backends.mysql' – jozxyqk

6

的「Django的支持」的文件暗示瞭解決方案,但不會使其明確:

Since the standard django.db.backends.mysql backend uses MySQLdb internally, app.yaml must reference MySQLdb in the list of libraries.

加入以下app.yaml似乎解決了導入錯誤:

libraries: 
- name: MySQLdb 
    version: "latest" 

注意MySQLdb目前不包含在available third party libraries的列表中。我嘗試了一下,它似乎已經解決了我的問題,YMMV。 enter link description here

+0

PS我知道OP不打算在AppEngine上使用MySQL,但是對於Cloud SQL,這是現在是受支持的配置(目前在預覽中)。這個SO問題是'appengine錯誤配置:加載MySQLdb模塊時出錯:沒有名爲MySQLdb的模塊',所以希望這個解決方案可以用於其他人嘗試在AppEngine上使用MySQLdb。 –

+0

這並沒有解決我的問題。我仍然在我的GAE開發服務器上得到錯誤加載MySQLdb模塊的錯誤:沒有名爲MySQLdb的模塊錯誤。我嘗試了'最新'以及'1.2.5'。 – Pieter

0

如果它不添加以下至app.yaml後的工作:

libraries: 
- name: MySQLdb 
    version: "latest" 

...然後採取以下步驟:

  1. 確保MySQLdb的安裝pip install mysql-python在Mac
  2. 確保GAE devserver指向您的virtualenv/pip'd python 2.7安裝與Mac/* nix的默認版本,因爲pip可能沒有安裝它。我通過更新GAE devserver來解決Can't find module: MySQLdb/usr/local/bin/python2.7GAE devserver preferences for Python Path

注:偏好可以通過應用程序菜單訪問:

  • 如果你使用的是Windows:File > Preferences...
  • 下看,如果你使用的是Mac,看看GoogleAppengineLauncher > Preferences...
+0

GAE devserver偏好窗格在哪裏? –

+0

它們在應用程序菜單下。我編輯了這篇文章來澄清這一點! –

+0

GoogeAppEngineLauncher命令行工具還是它有一個實際的GUI?我只記得安裝Google Cloud SDK以建立GAE。 –

相關問題