2016-10-04 10 views
0

это простой код для проверки перенаправления в html.and я использую Spyder для написания кода Python.GAE работает, но импорт webapp2 не удался в Spyder

import webapp2 
from valid_day import valid_day 
from valid_month import valid_month 
from valid_year import valid_year 
from html_escape import escape_html 
form = """ 
<form method="post"> 
    What is your birthday? 
    <br> 
    <label> 
     Month 
     <input type="text" name="month" value="%(month)s"> 
    </label> 
    <label> 
     Day 
     <input type="text" name="day" value="%(day)s"> 
    </label> 
    <label> 
     Year 
     <input type="text" name="year" value="%(year)s"> 
    </label> 
    <div style="color: red">%(error)s</div> 
    <br><br> 
    <input type="submit"> 
</form> 
""" 

class MainPage(webapp2.RequestHandler): 
    def write_form(self, error="", month="", day="", year=""): 
     self.response.out.write(form %{"error": error, 
             "month": escape_html(month), 
             "day": escape_html(day), 
             "year": escape_html(year)}) 

    def get(self): 
     self.write_form() 

    def post(self): 
     user_month = self.request.get('month') 
     user_day = self.request.get('day') 
     user_year = self.request.get('year') 

     month = valid_month(user_month) 
     day = valid_day(user_day) 
     year = valid_year(user_year) 

     if not(month and day and year): 
      self.write_form("That doesn't look valid to me, friend.", user_month, user_day, user_year) 
     else: 
      self.redirect("/thanks") 

class ThanksHandler(webapp2.RequestHandler): 
    def get(self): 
     self.response.out.write("Thanks! That's a totally valid day!") 

app = webapp2.WSGIApplication([('/', MainPage), 
           ('/thanks', ThanksHandler)], 
          debug=True) 

в то время как код хорошо работал с GAE и на моем http://localhost:8081/, она потерпела неудачу, когда я пытаюсь запустить код через клик в сообщении об ошибке Spyder.the есть: ImportError: Нет модуль с именем webapp2 Я также прочитать import webapp2 works on google-app-engine even though I don't have webapp2 installed и добавить каталог GAE в мой ~/.bashrc, как стажер:

export PYTHONPATH="$PYTHONPATH:/home/lehr/Web/google_appengine/" 
export PYTHONPATH="$PYTHONPATH:/home/lehr/Web/google_appengine/lib/" 
export PYTHONPATH="$PYTHONPATH:/home/lehr/Web/google_appengine/lib/yaml" 

, но это также не работает, даже если я перезагрузил убунт.

ответ

1

Код приложения GAE не предназначен для выполнения непосредственно, как автономное приложение, оно должно выполняться сервером разработки, который знает, как загружать и выполнять код приложения (дополняя его эмулированной изолированной песочницей GAE python функциональность). См. Using the Local Development Server.

Вы могли быть в состоянии выполнить это вместе с SDK (т.е. выполнить dev_appserver.py и передать его те же аргументы, как когда вы делали, когда вы его получили работу без Spyder). Но я не знаком с Spyder, я не уверен, поддерживает ли он такое исполнение вашего кода приложения через сторонний инструмент (и если да, то если это действительно практично/полезно для разработки)

+0

спасибо Dan, I просто интересно, не использую ли я эту среду IDE, какие инструменты я могу использовать для разработки, когда мне действительно нужно что-то вроде debug и autocomplete. –

+0

Я использую PyCharm, у которого есть оба. Но с приложениями GAE отладчик слишком медленный, чтобы мой вкус считал его практичным (вероятно, из-за запуска SDK), большую часть времени я использую отладку на основе журнала. Платная профессиональная версия имеет некоторые встроенные настройки для GAE, бесплатное издание сообщества (но я полагаю, что установить их большинство вручную невозможно). –