2009-06-07 9 views
6
DjangoはApacheで動作するように取得しよう

をインポートできませんでした、と私は、次のエラーを取得しています:mod_pythonのエラー:はImportError:設定

ImportError: Could not import settings 'MyDjangoApp.settings' (Is it on sys.path? Does it have syntax errors?): No module named MyDjangoApp.settings

私のDjangoアプリケーションが/ home /ユーザー/ジャンゴに位置しています /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は動作させるために場所のセクションを修正する方法を教えてください?

答えて

11

私はmod_pythonのサイドには/ home /ユーザー/ジャンゴ/ 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のENVのVARからモジュール名を削除します。

<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> 
+0

+1「/ home/user/django」(「MyDjangoApp import fooから」を許可する)とその代替案の違いをdjangoドキュメントで確認できます。 –

+0

設定の前からモジュール名を削除すると、私の問題が解決しました。ピー! – PhoebeB

4

完全を期すため、この答えを与える - あなたのケースだったにもかかわらず、異なる。

私はかつて私のDjangoプロジェクトtestと命名しました。さて、djangoはPythonモジュールのテストをインポートしていました。これは回帰テストのモジュールで、私のプロジェクトとは関係ありません。 PythonはあなたのDjangoプロジェクトと同じ名前を持つ別のモジュールを見つけた場合

このエラーが発生します。プロジェクトに別の方法で名前を付けるか、アプリケーションの親ディレクトリのパスをsys.pathの前に追加します。

+2

まさに私に起こっていたこと。ありがとう! – nlaq

+0

これも私の問題でした。私はテストと呼ばれるステージングエリアを持ち、名前は組み込みのパッケージと衝突しました。これはDjangoが恐らく特別なエラーメッセージを出さなければならないほど一般的なようです。 –

-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>