

<https://github.com/priyankavergadia/Django-Dialogflow-GoogleVisionAPI>

↑のDjangoのチャットボットをリンク先のドキュメントを元に動かそうとしていますが、  
最後のGoogle app engineへのデプロイのところで詰まっています。

■発生している問題

[code]

    python manage.py runserver
    
[/code]

では問題なく動くのですが、

[code]

    gcloud app deploy
    
[/code]

をした際、デプロイが成功したように見えるのですが、  
指定されたURLをブラウザで開くと「502 Bad Gateway」が表示されてしまいます。

Google app engine のログビューアで確認すると、

[code]

        textPayload: "Traceback (most recent call last):
      File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
        worker.init_process()
      File "/env/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 104, in init_process
        super(ThreadWorker, self).init_process()
      File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 129, in init_process
        self.load_wsgi()
      File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
        self.wsgi = self.app.wsgi()
      File "/env/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
        self.callable = self.load()
      File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
        return self.load_wsgiapp()
      File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
        return util.import_app(self.app_uri)
      File "/env/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app
        __import__(module)
      File "/srv/main.py", line 1, in <module>
        from mysite.wsgi import application
      File "/srv/mysite/wsgi.py", line 16, in <module>
        application = get_wsgi_application()
      File "/env/lib/python3.7/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
        django.setup(set_prefix=False)
      File "/env/lib/python3.7/site-packages/django/__init__.py", line 19, in setup
        configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
      File "/env/lib/python3.7/site-packages/django/conf/__init__.py", line 57, in __getattr__
        self._setup(name)
      File "/env/lib/python3.7/site-packages/django/conf/__init__.py", line 44, in _setup
        self._wrapped = Settings(settings_module)
      File "/env/lib/python3.7/site-packages/django/conf/__init__.py", line 107, in __init__
        mod = importlib.import_module(self.SETTINGS_MODULE)
      File "/opt/python3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "/srv/mysite/settings.py", line 82, in <module>
        import MySQLdb as sql  # noqa: 402
    ModuleNotFoundError: No module named 'MySQLdb'" 
    
[/code]

と表示されます。  
MySQLdbのモジュールの読み込みに問題が生じているのだとは見えるのですが、  
`runserver` では正常に動くのに、GAE上ではエラーが出る理由がわからず困っております。

ちなみに、setting.py上の表記は、

[code]

    # Install PyMySQL as mysqlclient/MySQLdb to use Django's mysqlclient adapter
    # See https://docs.djangoproject.com/en/2.1/ref/databases/#mysql-db-api-drivers
    # for more information
    import MySQLdb  # noqa: 402
    
[/code]

としていて、

[code]

    pip install mysqlclient
    
[/code]

でインストールは完了しております。  
GAE上でMySQLdbモジュールを読み込みためには何か追加で設定が必要なのでしょうか。  
アドバイスいただけますと幸いです。

■問題の発生した環境  
・Windows10  
・Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] ::
Anaconda, Inc. on win32  
・django 2.2.4  
・MySQL 第2世代5.7


CC BY-SA 4.0
2019-09-11T12:25:55.940
58998
2020-10-17T18:06:30.673
2019-09-12T00:27:59.333
3060
35746
question
mysql django google-app-engine
Django製アプリをGoogle App Engineにデプロイした時の「No module named 'MySQLdb'」エラーについて


以下を実行してみてください。

  * pipにPyMySQLが入っているなら、（mysqlclientのみでOKです）  
`pip uninstall PyMySQL`

  * settings.pyの以下の2行を削除

[code]

    import pymysql  # noqa: 402
    pymysql.install_as_MySQLdb()
    
[/code]

  * 最後にrequirements.txtに反映  
`pip freeze > requirements.txt`


CC BY-SA 4.0
2019-09-16T13:46:34.647
59096
2019-09-16T13:46:34.647
35870
58998
answer