2017-07-19 15 views
1

私のプロジェクトはbase.pydev.pyproduction.pyです(かなり自明です)。私のPC上で開発と生産のためのmanage.pyの変更

私だけdev.pybase.pyを維持し、サーバー上で私が唯一production.pybase.pyを保ちます。

WSGIは問題ではありませんが、os.environ.setdefault()の設定を変更するには、各展開後に常にmanage.pyに入る必要があります。

私はこの変更したい:しかし、これはまだImportErrorを提起

from __future__ import absolute_import, unicode_literals 

import os 
import sys 

if __name__ == "__main__": 
    try: 
     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.dev") 
    except: 
     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.production") 

    from django.core.management import execute_from_command_line 

    execute_from_command_line(sys.argv) 

:これまで

from __future__ import absolute_import, unicode_literals 

import os 
import sys 

if __name__ == "__main__": 
    try: 
     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.dev") #or project.settings.production 

    from django.core.management import execute_from_command_line 

    execute_from_command_line(sys.argv) 

を。なぜどんなアイデア?それとももっと良い方法を知っていますか?

答えて

1

これを制御する良い方法は、manage.pyを使用するシェルで環境変数DJANGO_SETTINGS_MODULEを使用することです。 デフォルトmanage.pyは変更する必要はありません。ImportErrorについては

#!/usr/bin/env python 
import os 
import sys 

if __name__ == "__main__": 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings") 

    from django.core.management import execute_from_command_line 

    execute_from_command_line(sys.argv) 

、 私たちはそれをデバッグするのに十分な情報を持っているかわかりません。 しかし、基本的には、ファイルが現在の作業ディレクトリ またはPYTHONPATHのディレクトリから到達可能であることを確認する必要があります。 たとえば、プロジェクトのルートからmanage.pyを実行すると、 とproject/settings/dev.pyが存在する場合は、値 "project.settings.dev"が有効になります。

関連する問題