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