Подтвердить что ты не робот

Ошибка с выпуском оружия против герою

Я не могу запустить gunicorn on heroku с помощью простого флеш-приложения приложение действительно просто, это app.py

app = Flask(__name__)

@app.route("/")
def say_hello(url):
    return "Hello"


if __name__ == "__main__":
    port = int(os.environ.get('PORT', 8888))
    app.run(host='0.0.0.0',port=port)

приложение работает отлично через тестовый сервер флагов на героку когда я переключаюсь на использование пушки, он падает с:

ImportError: No module named app.wsgiapp

my requirements.txt:

Flask==0.8
gevent==0.13.7
gunicorn==0.13.2

Я пробовал разные версии стрельбы из 0.13.7 до 0.14.6 без успеха

PROCFILE:

web: gunicorn app:app -w 4 -b 0.0.0.0:$PORT

команда:

heroku logs

дает

←[33m2012-08-09T21:08:02+00:00 app[web.1]:←[0m ImportError: No module named app.
wsgiapp ←[33m2012-08-09T21:08:02+00:00 app[web.1]:←[0m     entry = __import__(self.modul
e_name, globals(),globals(), ['__name__'])

Любая помощь пожалуйста

Спасибо

Джо

4b9b3361

Ответ 1

В моем случае я получил эту ошибку, имея файл gunicorn.py в моей папке верхнего уровня. Это столкнулось с установленной библиотекой орудийного боя на Хереку.

Итак, моя команда запуска, вызвавшая проблему, была:

gunicorn -c gunicorn.py myapp:main

Вызов следующей ошибки:

Traceback (most recent call last):
  File "/app/.heroku/python/bin/gunicorn", line 9, in <module>
    load_entry_point('gunicorn==18.0', 'console_scripts', 'gunicorn')()
  File "/app/.heroku/python/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/app/.heroku/python/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
    return ep.load()
  File "/app/.heroku/python/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
ImportError: No module named app.wsgiapp

В то время как после mv gunicorn.py gunicorn_config.py он отлично работал с:

gunicorn -c gunicorn_config.py myapp:main

Ответ 2

Я столкнулся с этой проблемой при обновлении Ubuntu до 14.04 LTS.

По какой-то причине gunicorn не удалось найти правильный путь python для разрешения модуля wsgi.

Я решил это, пока, объявив путь python явно gunicorn с помощью параметра --pythonpath (зарегистрированный здесь).

Например:

gunicorn --pythonpath /path/to/containing/directory "app.wsgi_app:wsgi_app"

Ответ 3

Я, наконец, понял это.

В основном это проблема PATH. Если вы импортируете определенные модули (например, os и sys) в неправильном порядке, в зависимости от вашей установки, вы заставите Gunicorn искать неправильный пакет для приложения .wsgiapp. (не путать с функцией app.wsgi_app в Flask)

Правильный порядок импорта будет зависеть от вашей настройки, но эмпирическое правило, основанное на том, что я смог получить, состояло в том, чтобы убедиться, что ваш sys модуль импортирован до вашего os.

Помимо этого, если остальная часть конфигурации является нормальной (как указано выше), у вас не должно быть проблем.

Примечание: ЭТО ТОЛЬКО ПРОБЛЕМА НА ГЕРОКУ с Гуйкорном. Это имеет какое-то отношение к тому, как настроен их путь PYTHONPATH и модуль поиска. Я не знаю, почему именно, но это необходимо только для рабочей среды, локальные настройки будут работать нормально, независимо от порядка импорта модуля.

Ответ 4

Мое предположение, что в пути python есть другой модуль "app" (как у пушки, так и с флягой уже есть модуль, называемый приложением). Переименуйте его иначе, чем app.py, и он должен работать.