Кто-то мог дать мне подсказку по тому, почему я должен добавить свой корневой путь проекта к пути 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 /" журнал, говорит моему, что 'myapp' не может быть импортирован, даже при том, что 'djapp.settings'. (проверяющий 'djapp' был импортирован),
Это al работает правильно с командой./manage.py. существует a __init__
в папке проекта.
Для пользы тестирований я вижу, что та же проблема использует addsitedir
:
site.addsitedir('/home/user/web/project/')
site.addsitedir('/home/user/web/project/djapp')
Поскольку djapp
(папка проекта django) находится в родительской папке, которая также принадлежит развертыванию, я переименовал папку djapp
просто в project
. { {1}} Тогда этот код всегда правильный:
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
Предположительно, в вашем проекте есть код, который выполняет из myapp import foo
.
Два варианта:
из djapp.myapp import foo
, что не рекомендуется, так как это предотвращает переносимость; djapp
в свой WSGI и установите для DJANGO_SETTINGS_MODULE
только 'settings'
.