Развертывание Django с WSGI: ошибка импорта приложения - PullRequest
1 голос
/ 24 февраля 2010

Я новичок в мире Apache, Linux и Python.Я пытаюсь развернуть приложение django на apache, используя WSGI (рекомендуемый способ).

Моя структура каталогов проекта django выглядит следующим образом ...

  • /
  • / apache / django.wsgi
  • / apps / #Iположить все мои приложения в этот каталог
  • / apps / provider /
  • / apps / shopping /
  • / apps /...
  • / middleware /
  • ...

В apache у меня есть следующие настройки ....

LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / D:/Projects/project-name/apache/django.wsgi

<Directory "D:/Projects/project-name/apache/">
  Allow from all
  Order deny,allow
</Directory>

Файл django.wsgi имеет следующий код ...

import os
import sys
import settings

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

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

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

При запуске я обнаружил эту ошибку в appache error.log ...

  • В этой строке произошла ошибка.from apps.providers.models import Provider
  • Ошибка импорта: нет модуля с именем provider.models

Я не знаю, почему он выдает эту ошибку.Он должен был загрузить провайдера из apps.providers.models, но он пытается загрузить его из provider.model.

Любое решение будет оценено.

Спасибо

1 Ответ

0 голосов
/ 24 февраля 2010

Попробуйте это:

sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)),'..'))

Он помещает папку вашего проекта на первую позицию и использует os.path.join для перехода на один каталог вверх (что может быть лучше в Windows).

Возможно, в вашем пути к Python есть еще один модуль "apps".

...