Ошибка импорта приложения Python в Django с WSGI gunicorn

Я пытаюсь развернуть приложение Django с Gunicorn на Heroku, и я столкнулся с несколькими заминками.

Когда я начинал свой проект, моя версия Django была 1.3 и не содержала стандартного модуля wsgi.py, поэтому я добавил стандартный модуль wsgi как top / wsgi.py (top - имя моего проекта, turk - имя моего приложения, topturk - директория, в которой они хранятся, сохраняется, поэтому логы ошибок имеют смысл ниже).

Теперь, когда я бегу

gunicorn top.wsgi:application -b 0.0.0.0:$PORT

Сервер успешно запускается,

19:00:42 web.1     | started with pid 7869
19:00:42 web.1     | 2012-07-25 19:00:42 [7869] [INFO] Starting gunicorn 0.14.5
19:00:42 web.1     | 2012-07-25 19:00:42 [7869] [INFO] Listening at: http://0.0.0.0:5000 (7869)
19:00:42 web.1     | 2012-07-25 19:00:42 [7869] [INFO] Using worker: sync
19:00:42 web.1     | 2012-07-25 19:00:42 [7870] [INFO] Booting worker with pid: 7870

но затем при переходе к 0.0.0.0:5000 мне возвращается внутренняя ошибка сервера:

19:00:45 web.1     | 2012-07-25 17:00:45 [7870] [ERROR] Error handling request
19:00:45 web.1     | Traceback (most recent call last):
19:00:45 web.1     |   File "/Users/intenex/Dropbox/code/django/topturk/venv/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 102, in handle_request
19:00:45 web.1     |     respiter = self.wsgi(environ, resp.start_response)
19:00:45 web.1     |   File "/Users/intenex/Dropbox/code/django/topturk/venv/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 219, in __call__
19:00:45 web.1     |     self.load_middleware()
19:00:45 web.1     |   File "/Users/intenex/Dropbox/code/django/topturk/venv/lib/python2.7/site-packages/django/core/handlers/base.py", line 47, in load_middleware
19:00:45 web.1     |     raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e))
19:00:45 web.1     | ImproperlyConfigured: Error importing middleware turk.middleware.subdomain: "No module named turk.middleware.subdomain"
19:00:47 web.1     | 2012-07-25 17:00:47 [7870] [ERROR] Error handling request
19:00:47 web.1     | Traceback (most recent call last):
19:00:47 web.1     |   File "/Users/intenex/Dropbox/code/django/topturk/venv/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 102, in handle_request
19:00:47 web.1     |     respiter = self.wsgi(environ, resp.start_response)
19:00:47 web.1     |   File "/Users/intenex/Dropbox/code/django/topturk/venv/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 219, in __call__
19:00:47 web.1     |     self.load_middleware()
19:00:47 web.1     |   File "/Users/intenex/Dropbox/code/django/topturk/venv/lib/python2.7/site-packages/django/core/handlers/base.py", line 47, in load_middleware
19:00:47 web.1     |     raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e))
19:00:47 web.1     | ImproperlyConfigured: Error importing middleware turk.middleware.subdomain: "No module named turk.middleware.subdomain"

Я предполагаю, что это ошибка пути к Python, когда сервер не знает, как импортировать из каталога моего приложения

Соответствующий код импорта находится здесь в настройках:

MIDDLEWARE_CLASSES = (
    'turk.middleware.subdomain.SubdomainMiddleware',
    'turk.middleware.removewww.RemoveWWWMiddleware',
)

Я попытался решить эту проблему, вставив каталог приложения в sys.path, как показано в верхней части моего файла settings.py, например:

PROJECT_ROOT = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(1, PROJECT_ROOT+'/turk/')

То, что я проверил, добавляет каталог приложения к пути, но все еще не имеет значения. Есть идеи? Также

sys.path.insert(1, PROJECT_ROOT+'/turk/')

кажется хакерским и добавляет по крайней мере две копии каталога в путь. Какой правильный способ добавить PYTHON_PATH в Django? Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос