6

DjangoをApacheで動作させようとすると、次のエラーが発生します。

ImportError:設定をインポートできませんでした'MyDjangoApp.settings'(sys.pathにありますか?構文エラーがありますか?):MyDjangoApp.settingsという名前のモジュールがありません

私のDjangoアプリは/home/ user / django /MyDjangoApp/にあります

私のhttpd.confロケーションセクションは次のようになります。

<Location "/MyDjangoApp/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings
  PythonOption django.root /MyDjangoApp
  PythonPath "['/home/user/django/MyDjangoApp/','/var/www'] + sys.path" 
  PythonDebug On
</Location>

Djangoを機能させるためにロケーションセクションを修正する方法を教えてください。

4

3 に答える 3

11

mod_python は /home/user/django/MyDjangoApp ディレクトリの横に存在しない MKSearch モジュールの設定を探していると思います。以下のように、親ディレクトリを PythonPath ディレクティブに追加してみてください。

<Location "/MyDjangoApp/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings
  PythonOption django.root /MyDjangoApp
  PythonPath "['/home/user/django/', '/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
  PythonDebug On
</Location>

または、以下のように DJANGO_SETTINGS_MODULE 環境変数からモジュール名を削除します。

<Location "/MyDjangoApp/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE settings
  PythonOption django.root /MyDjangoApp
  PythonPath "['/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
  PythonDebug On
</Location>
于 2009-06-07T23:47:30.827 に答える
3

あなたのケースが異なっていたとしても、完全を期すためにこの答えを出してください。

私はかつて自分の django プロジェクトに名前を付けましたtest。さて、djangoはpythonモジュールテストをインポートしていました-これは回帰テスト用のモジュールであり、私のプロジェクトとは何の関係もありません。

このエラーは、python が django プロジェクトと同じ名前の別のモジュールを見つけた場合に発生します。プロジェクトに別の名前を付けるか、アプリケーションの親ディレクトリのパスを sys.path の先頭に追加します。

于 2010-02-08T08:16:58.097 に答える
-1

私のApache構成ファイルにある次の例は機能します。人々からの良い回答にもかかわらず、 mod_python を機能させるのは非常に難しいことがわかりました。ほとんどの場合、私が受け取ったコメントはすべて、mod_python の代わりに mod_wsgi を使用するというものでした。

ボストン Python ミートアップからのコメントを含め、私が見たコメントはすべて、mod_wsgi の方が使いやすいという意見に賛成です。私の Red Hat EL 5 WS の場合、mod_python からの変更は実用的ではありません。

<Location />
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE settings
        PythonOption django.root /home/amr/django/amr
        PythonPath "['/home/amr/django', '/home/amr/django/amr', '/usr/local/lib
/site-packages/django'] + sys.path"
        PythonDebug On
</Location>
于 2010-09-24T15:15:24.767 に答える