2013-07-22 3 views
1

Сначала я выполнил инструкции в учебном пособии по блогу Мэтта Карьера (хотя предполагалось, что я буду создавать подкаталог в своем домене, когда это не так). Затем я удалил все и начал с инструкций на вики-странице Dreamhost о Flask. Каждый раз я получаю сообщение в браузере: «Произошла ошибка при импорте вашего пассажира_wsgi.py». answer for this topic on StackOverflow не работал для меня.Flask Passenger WSGI на Dreamhost

Мой файл passenger_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 flask import Flask 
application = Flask(__name__) 

sys.path.append('penguicon-trax') 
from penguicon-trax.penguicontrax import app as application 

penguicon-Trax является имя каталога Git создает, когда я клонировать мое приложение в virtualenv, где я установил Настой (не в публичной директории). Приложение представляет собой penguicontrax.py без тире.

Я убедился, что отступ на четвертой строке пассажира_wsgi.py был вкладкой, а не пробелами.

Я использовал веб-панель DreamHost (где я полностью размещен), чтобы сделать/home/username/flask_env/public, и я отметил флажок «Пассажир (только для Ruby/Python)» и нажал кнопку «Изменить настройки» ,

I FTP'ed пассажир_wsgi.py прямо в мой каталог flask_env на Dreamhost. Когда я SSH в Dreamhost, Ls в командной строке дает мне:

bin lib   passenger_wsgi.pyc public 
include passenger_wsgi.py penguicon-trax 

Когда я бегу passenger_wsgi.py через SSH, это дает мне:

File "passenger_wsgi.py", line 11 
    from penguicon-trax.penguicontrax import app as application 
       ^
SyntaxError: invalid syntax 

Она также делает это, когда я просто использовать " от приложения импорта penguicon-trax в качестве приложения ».

Когда я меняю эту строку, чтобы удалить тире: «penguicontrax.penguicontrax» и запустить ее, она дает мне «ImportError: No module penguicontrax».

Если я изменил строку на «из приложения импорта penguicontrax как приложение» и запустил ее через SSH, это не дает мне никакого сообщения об ошибке или другого выхода. Тем не менее, мой домен теперь дает 404.

Можете ли вы рассказать мне, что я делаю неправильно?

ответ

2

Если passenger_wsgi.py имеет следующий код в конце его:

from foo.bar import app as application 

... то вам необходимо подкаталог с именем «Foo» с двумя файлами в нем: один файл с именем bar.py и еще один файл с именем __init__.py, так что Python распознает, что каталог содержит код модуля.

В вашем примере удалите тире из имени папки (penguicon-trax), начиная с modules should have short, all-lowercase names. Тогда ваш Flask application code будет в файле в $ HOME/flask_env/penguicontrax/penguicontrax.py Наконец, выполните следующие действия, чтобы попробовать его:

touch $HOME/flask_env/penguicontrax/__init__.py 
python $HOME/flask_env/passenger_wsgi.py 
Смежные вопросы