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が正しくない。