概要
- Django で作成したプロジェクトを mod_wsgi 使って公開しようとしたときに import エラー発生。
- wsgi.py のパス読み込みを追加して解決。
エラー状況
- (1) manage.py 機能のテストサーバで確認したところ、エラー発生せず。
$ python manage.py runserver
=> ( 正常起動 )
- (2) mod_wsgi 使って公開しようとしたら、エラー発生。
- ブラウザ経由のアクセスでは、500 番エラー表示。
- httpd のエラーログでは、以下のメッセージ。settings ファイルが読めないと。
ImportError: Could not import settings '<settingsファイル名>' (Is it on sys.path? Is there an import error in the settings file?):
解決
- wsgi.py を編集。先頭にプロジェクトのパスを読む設定を追加。
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..' )
- 結果的に、wsgi.py は以下のような形になる。
'''
( 前半部コメント省略 )
'''
import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..' )
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<settings ファイル名>")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
- 編集完了したら、念のため、httpd は restart。
$ sudo service httpd restart
確認
- 実際にブラウザで見る等して、正しく表示されることを確認。