7

プロジェクトのルートパスをpythonパスに追加する必要がある理由と、WSGIファイルのアプリケーション自体を追加する必要がある理由を教えてください。

プロジェクトベースは「djapp」、アプリケーションは「myapp」と呼ばれます。

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..')
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../djapp')

os.environ['DJANGO_SETTINGS_MODULE'] = 'djapp.settings'

「/../djapp/」の行を省略すると、「djapp.settings」はインポートできますが、「myapp」はインポートできないことがログに記録されます。(「djapp」がインポートされたことを検証しています)

./manage.py コマンドで正しく動作します。__init__プロジェクトフォルダにあります。

テストのために、次を使用して同じ問題が発生しaddsitedirます。

site.addsitedir('/home/user/web/project/')
site.addsitedir('/home/user/web/project/djapp')
4

2 に答える 2

5

djapp(djangoプロジェクトフォルダー)は展開に属する親フォルダーにあるため、フォルダーの名前を単純にに変更しましdjappproject。次に、このコードは常に正しいです。

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..' )
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../project')

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'

完全なフォルダ レイアウトは次のとおりです。

host.example.com\
    etc\
    bin\
    project\
    logs\

そして、あなたは何を持っていますか。このようにして、プロジェクトは常にプロジェクトと呼ぶことができます:)

それが役立つことを願っています。

GrtzG

于 2010-04-07T20:31:55.213 に答える
3

おそらく、プロジェクト内に実行中のコードがありますfrom myapp import foo

2つのオプション:

  • これをに変更しfrom djapp.myapp import fooます。これは、移植性を妨げるためお勧めしません。
  • djappWSGIを追加するだけで、をに設定DJANGO_SETTINGS_MODULEします'settings'
于 2010-03-25T13:23:26.813 に答える