LoginSignup
3
3

More than 5 years have passed since last update.

Django+Heroku+Windowsでデプロイ時にハマッたこと

Last updated at Posted at 2018-08-07

見出し

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となりました。

image.png

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アプリケーション開発を始めるためのテンプレートを参考にさせていただきました。

すると、問題なくアプリケーションを表示させられることができました。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3