settings.pyファイルが読めない問題を解決→PythonPathでパス指定

少し状況を簡略化してまとめる。

  • Djangoで作ったアプリを、/Users/hoge/Django/myproj/myapp/に置く。ここで、myprojはプロジェクト名、myappはアプリ名。
  • Apache2とmod_pythonで、これを動かしたい。
  • データベースは、開発時に使ったSQLiteの設定のまま、変えていない。
  • httpd.confファイルの設定は、以下の通り。
<Location "/test/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  PythonOption django.root /test
  PythonPath "['/Users/hoge/Django', '/Library/Python/2.6/site-package/'] + sys.path"
  SetEnv DJANGO_SETTINGS_MODULE myproj.settings
  PythonDebug On
</Location>

これだけの条件で、ブラウザでhttp://(IP)/test/を開くと、myapp.formsなんてモジュールはimportできないよ、とImportErrorになる。/Users/hoge/Django/myproj/myapp/forms.pyファイルは存在するので、パスの問題だろうと思う。いろいろ調べていて見つけた。
Django v1.0 documentation (Apacheとmod_pythonでDjangoを動かす)

コード中でimport blogrollしていて、blogrollがweblog/ディレクトリの下にあるようなら、/usr/local/django-apps/weblog/もPythonPathに加えねばなりません。

だとすると、PythonPathに/Users/hoge/Django/myprojも加えなければならないことになる。
そこで加えたら、ImportErrorは解消。

  • 次に現れた問題
    • CSSファイルが読み込まれていないようだ。メディアファイルをどう提供するか。
    • データベースファイルが読めない?
    • 他のページに移動することができない。URLが正しくない。