【问题标题】:GAE works but import webapp2 failed in SpyderGAE 工作,但在 Spyder 中导入 webapp2 失败
【发布时间】:2016-10-04 12:27:01
【问题描述】:

这是在 html 中测试重定向的简单代码。我使用 Spyder 编写 Python 代码。

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 中单击运行代码时它失败了。错误消息是: 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"

但即使我重新启动了 ubuntu,这也不起作用。

【问题讨论】:

    标签: google-app-engine spyder pythonpath


    【解决方案1】:

    GAE 应用程序代码不打算直接执行,作为一个独立的应用程序,它需要由知道如何加载和执行应用程序代码的开发服务器执行(同时用模拟的 GAE python 沙箱功能补充它)。见Using the Local Development Server

    可能能够一起与 SDK 一起执行它(即执行 dev_appserver.py 并传递与在没有它的情况下运行时相同的 args间谍)。但我不熟悉 Spyder,我不确定它是否支持通过 3rd 方工具执行您的应用程序代码(如果支持 - 如果它真的对开发实用/有用)

    【讨论】:

    • 感谢 Dan,我只是想知道如果我不使用这个 IDE,当我真的需要调试和自动完成之类的东西时,我可以使用哪些工具进行开发
    • 我正在使用 PyCharm,两者兼有。但是对于 GAE 应用程序,调试器对于我的口味来说有点太慢了,以至于不能认为它实用(可能也是因为运行 SDK),我大部分时间都使用基于日志的调试。付费专业版有一些针对 GAE 的内置定制,免费社区版没有(但我想手动设置其中的大部分并非不可能)。
    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 2013-01-30
    • 2020-03-14
    • 2019-07-10
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多