雑食性雑感雑記

知識の整理場。ため込んだ知識をブログ記事として再構築します。

Django、mod_wsgi で公開時に発生した Import エラーの解決

概要

  • 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

確認

  • 実際にブラウザで見る等して、正しく表示されることを確認。