Ответ 1
Try:
web: gunicorn --pythonpath app app.wsgi
Я новичок в героике и стрельбе, поэтому я не уверен, как это работает. Но я сделал некоторые поиски, и я думаю, что я близок к развертыванию своего приложения Django (1.5.1). Поэтому я знаю, что мне нужен файл Procfile, который имеет
web: gunicorn app.wsgi
Потому что мои каталоги немного разные. Я не могу запустить gunicorn в корневом каталоге
app_project
requirements/
contributors/
app/
app/
settings/
wsgi.py
# Normally Procfile goes here
Procfile
Обычно приложение/будет корневым каталогом, но я решил структурировать свои папки таким образом, чтобы отделить мое приложение django от других вещей. Поскольку я должен поместить Procfile в корневой каталог для распознавания герою, что мне следует добавить в файл Procfile и/или какие параметры следует разместить в команде gunicorn?
Примечание:
web: gunicorn app.wsgi # won't work because Procfile is in a directory above
# I also want to keep the directories as is
# I also don't want to create a secondary git inside the app folder just for heroku
web: gunicorn app.app.wsgi # won't work because I don't want to convert the folder into a python module
Try:
web: gunicorn --pythonpath app app.wsgi
Как сказал в своем ответе @Graham Dumpleton, проблема OP могла быть решена путем изменения его Procfile на следующее:
web: gunicorn --pythonpath app app.wsgi
Почему это работает:
--pythonpath
позволяет динамически присоединять каталог к списку каталогов, которые выполняет среда выполнения Python, когда выполняет просмотр модуля.--pythonpath app
к команде gunicorn, интерпретатору в основном сказали: "Загляните внутрь каталога приложения для пакета (также), называемого приложением, которое содержит модуль wsgi.`Общие имена папок в вопросе OP могут скрывать синтаксис команды, который выглядит следующим образом:
gunicorn --pythonpath <directory_containing_package> <package>.<module>
Дополнительная информация:
Документация Gunicorn
Я сделал уродливый взломать эту работу. Поэтому я собираюсь опубликовать свой ответ, но я надеюсь, что вы, ребята, можете придумать лучшее решение.
PROCFILE
web: sh ./app/run.sh
app_project/приложение/run.sh
#!/bin/bash
cd app
gunicorn app.wsgi
Если ваш файл вложен в папки, то в этом есть смысл.
Вместо того чтобы добавлять путь к переменной окружения PYTHONPATH, я ссылался на него, как если бы вы ссылались на модули в пакете:
В моем случае объект приложения находился в файле scriptC.py внутри папки B, которая находится внутри папки A.
web: gunicorn folderA.folderB.scriptC:app