Не удается запустить Flask с помощью Passenger WSGI на общем хостинге Dreamhost

Я пытаюсь заставить приложение Flask "hello world" работать на общем сервере Dreamhost, следуя инструкциям на их вики, но мне не повезло.

Мое приложение Flask — это приложение «hello world» из краткого руководства по запуску Flask:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

Который у меня есть в файле с именем «hello.py» в папке с именем mysite, в соответствии с инструкциями вики DH. Мой файлpassage_wsgi.py:

import sys, os
INTERP = os.path.join(os.environ['HOME'], 'flask_env', 'bin', 'python')
if sys.executable != INTERP:
    os.execl(INTERP, INTERP, *sys.argv)
sys.path.append(os.getcwd())
from mysite import hello as application

Я пытался запустить команды в консоли Python, и последняя строка импорта не удалась, пока я не добавил файл __init__.py в каталог mysite.

Когда я пытаюсь получить доступ к веб-сайту, я просто получаю ошибку 500 (и, к сожалению, в журналах ничего нет, если только они не находятся в журналах, к которым я не могу получить доступ, поскольку это общий сервер...).

Поскольку это самые основные настройки (то есть скопированные и вставленные из вики), я не могу отделаться от ощущения, что упускаю что-то очень простое. Или, возможно, это невозможно на общем сервере?


person Dave Hollingworth    schedule 30.04.2012    source источник
comment
Ты поставил хэшбанг? иметь #!/usr/bin/python в самой первой строке файла   -  person Theron Luhn    schedule 30.04.2012
comment
Только что попробовал ваше предложение, увы, оно не дало никакого эффекта...   -  person Dave Hollingworth    schedule 30.04.2012


Ответы (1)


Означает ли ответ на мой собственный вопрос, что я разговариваю сам с собой?

Во всяком случае - я, кажется, исправил это. Вместо того, чтобы найти красивое полезное сообщение об ошибке, я снова проделал все шаги один за другим, и оказалось, что это была ошибка импорта в файле passenger_wsgi.py. Поскольку приложение находится в подкаталоге mysite, строка:

from mysite import hello as application

должно было быть (и фактически есть сейчас):

from mysite.hello import app as application

И это работает. Что приятно.

person Dave Hollingworth    schedule 30.04.2012
comment
+1 ... и нет, это просто означает, что вы помогаете сделать этот сайт немного лучше. Спасибо за это! - person Sean Vieira; 01.05.2012
comment
Это сработало для меня. Мне просто нужно было добавить файл __init__.py__ в каталог mysite, чтобы python рассматривал каталог как содержащий пакеты. docs.python.org/2/tutorial/modules.html#packages stackoverflow.com/questions/448271/what-is-init-py-for - person eric.christensen; 29.12.2012
comment
Это решение действительно помогло, хотя мне потребовался еще один шаг, чтобы заставить его работать: в примере DH wiki пассажир_wsgi .py, я раскомментировал строки отладки: # from werkzeug.debug import DebuggedApplication # application = DebuggedApplication(application, evalex=True) Это было проблематично, потому что строки имеют неправильный отступ. Обязательно удалите все пробелы перед обеими строками, если вы хотите раскомментировать их, чтобы включить отладку. - person hamx0r; 09.05.2013