【发布时间】:2012-07-11 16:58:21
【问题描述】:
虽然我能够让我的“Hello, World”程序在 Google App Engine (GAE) 上运行,但它仅在我创建不依赖于 webapp2 导入的版本时才有效。为什么导入不起作用?我需要做什么来修复它?
有效的 helloworld.py 版本:
print 'Content-Type: text/plain'
print ''
print 'Hello, World!!'
不工作的 helloworld.py 版本:
import webapp2
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, World!')
app = webapp2.WSGIApplication([('/', MainPage)], debug=True)
第二个版本呈现为空白页。
我认为问题在于 webapp2 导入不起作用。当我从命令行从与我的 hello world 程序相同的目录中运行 python 时,我得到以下信息:
Brians-MacBook-Air-2:app_engine_hello_world brian$ python
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import webapp2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named webapp2
但是,我在以下目录中看到了 webapp2.py:
Brians-MacBook-Air-2:webapp2 brian$ pwd
/Users/brian/Repos/app_engine_hello_world/build/webapp2
另外,我正在运行安装在以下位置的 python 2.7:
Brians-MacBook-Air-2:app_engine_hello_world brian$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
编辑:添加我的 app.yaml 文件和一些其他可能有用的信息...
application: hello-world-cs253
version: 1
runtime: python27
api_version: 1
threadsafe: no
handlers:
- url: /.*
script: helloworld.py
我正在使用 SDK / GAE 启动器的 1.7.0 - 2012-06-26 版本
Chrome、Firefox 和 Safari 中的结果相同
【问题讨论】:
-
您的
app.yaml中有什么内容?你使用的是什么浏览器?你在使用 SDK 吗?哪个版本?如果/Users/brian/Repos/app_engine_hello_world/build不在您的PYTHON_PATH中,则不会导入。要检查它echo $PYTHON_PATH或 Python REPLimport sys和print sys.path。 -
@bossylobster - 感谢您的后续问题和建议。他们非常感激。我在上面编辑了我的问题,包括我的
app.yaml、浏览器和 SDK 信息。使用 IDLE,我确认/Users/brian/Repos/app_engine_hello_world/build不在我的 PYTHON_PATH 中。你能告诉我如何将目录添加到 PYTHON_PATH 吗?和添加到 $PATH 一样吗?对不起,如果这是一个菜鸟问题。 -
如果您没有在实际的应用程序引擎或 dev_appserver 上运行,我猜您可能不需要 webapp2。尝试条件导入。 USE_APP_ENGINE = False 如果 USE_APP_ENGINE:导入 webapp2
标签: python google-app-engine webapp2