見出し
Djangoを用いてPythonベースのWEBアプリケーションを作るにあたり、ハマッたことを備忘録
的に書きます。
環境は以下です。
- Windows8
- Python 3.6.5
- virtualenv 16.0.0
- Django 2.1
また、アプリ構成は以下の通りです。
myProject
├── venv
├── Procfile
├── db.sqlite3
├── manage.py
├── myDjango
│ ├──__pycache__
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── myapp
├── templates
├── static
├── requirements.txt
├── Pipfile
├── Pipfile.lock
├── requirements.txt
├── .gitignore
└── runtime.txt
ハマッたこと
gitを用いて、以下を実施しheroku openすると、Errorになりました。
git add .
git commit
git push heroku master
ここまではError無しで行けますが、heroku openで以下のErrorとなりました。
Windowのメッセージに従い、以下からログを見ると、
heroku logs
以下のエラーが出てました。
ModuleNotFoundError: No module named 'dj_static'
どうやら、heroku上でdj_staticを見つけられていません。
実際、
(venv) C:\Users\Owner\Desktop\Django\myProject2>heroku run bash
Running bash on ⬢ s-worldcup... up, run.9708 (Free)
~ $ python
Python 3.6.5 (default, May 4 2018, 18:15:35)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dj_static
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'dj_static'
コマンドから、heroku上のPython対話モードを起動しても、dj_staticを見つけられていません。
このdj_staticは、myDjango-wsgi.pyにて参照されています。
wsgi.py
import os
from dj_static import Cling
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myDjango.settings")
application = Cling(get_wsgi_application())
application = get_wsgi_application()
そこで、wsgi.pyを以下のように修正しました。
wsgi.py
import os
# from dj_static import Cling
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myDjango.settings")
# application = Cling(get_wsgi_application())
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
これは、[Python]HerokuでDjangoアプリケーション開発を始めるためのテンプレートを参考にさせていただきました。
すると、問題なくアプリケーションを表示させられることができました。