Cannot run a simple helloworld in gae (python 2.7)

2019-03-29 05:37发布

I am trying to run the official helloworld program in google-appengine 1.6.4 for python 2.7.

It's so frustrating to be not able to run a simple helloworld. I would appreciate any kind of help here.

Error I encounter:-

shadyabhi@MBP-archlinux ~/codes/gae $ dev_appserver.py helloworld/
INFO     2012-04-06 23:25:55,030 appengine_rpc.py:160] Server: appengine.google.com
INFO     2012-04-06 23:25:55,034 appcfg.py:582] Checking for updates to the SDK.
INFO     2012-04-06 23:25:56,709 appcfg.py:616] This SDK release is newer than the advertised release.
WARNING  2012-04-06 23:25:56,710 datastore_file_stub.py:513] Could not read datastore data from /tmp/dev_appserver.datastore
INFO     2012-04-06 23:25:56,773 dev_appserver_multiprocess.py:647] Running application dev~helloworld on port 8080: http://localhost:8080
INFO     2012-04-06 23:25:56,774 dev_appserver_multiprocess.py:649] Admin console is available at: http://localhost:8080/_ah/admin
WARNING  2012-04-06 23:26:00,928 py_zipimport.py:139] Can't open zipfile /usr/lib/python2.7/site-packages/setuptools-0.6c11.egg-info: IOError: [Errno 13] file not accessible: '/usr/lib/python2.7/site-packages/setuptools-0.6c11.egg-info'
ERROR    2012-04-06 23:26:01,101 wsgi.py:189] 
Traceback (most recent call last):
  File "/opt/google-appengine-python/google/appengine/runtime/wsgi.py", line 187, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/opt/google-appengine-python/google/appengine/runtime/wsgi.py", line 239, in _LoadHandler
    raise ImportError('%s has no attribute %s' % (handler, name))
ImportError: <module 'helloworld' from '/home/shadyabhi/codes/gae/helloworld/helloworld.pyc'> has no attribute app
INFO     2012-04-06 23:26:01,110 dev_appserver.py:2884] "GET / HTTP/1.1" 500 -
ERROR    2012-04-06 23:26:01,479 wsgi.py:189] 
Traceback (most recent call last):
  File "/opt/google-appengine-python/google/appengine/runtime/wsgi.py", line 187, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/opt/google-appengine-python/google/appengine/runtime/wsgi.py", line 239, in _LoadHandler
    raise ImportError('%s has no attribute %s' % (handler, name))
ImportError: <module 'helloworld' from '/home/shadyabhi/codes/gae/helloworld/helloworld.pyc'> has no attribute app
INFO     2012-04-06 23:26:01,486 dev_appserver.py:2884] "GET /favicon.ico HTTP/1.1" 500 -

7条回答
来,给爷笑一个
2楼-- · 2019-03-29 05:43

by checking your git repo i see helloworld is not a .py file.
rename it to helloworld.py and you should be good to go.

查看更多
神经病院院长
3楼-- · 2019-03-29 05:46

I have been working on the official hello world tutorial in python 2.7 and found the same mistake in the configuration file app.yaml The last line reads

script: helloworld.application

it should be

script: helloworld.app

查看更多
对你真心纯属浪费
4楼-- · 2019-03-29 05:47

When using runtime python 2.7 you don't have to use the main function

Remove this

if __name__ == '__main__':
      run_wsgi_app(app)

and simply call

app = webapp.WSGIApplication(
[('/', MainHandler),
('/upload', UploadHandler), 
('/serve/([^/]+)?', ServeHandler),], debug=True)
查看更多
SAY GOODBYE
5楼-- · 2019-03-29 05:56

One difference between the files that you have on github and the official google hellworld tutorial is that your helloworld file doesn't seem to be named helloworld.py. Potentially that would help?

Additionally, do you need that PROJECT_DIR variable at the top of helloworld?

If you are struggling to get the basic tutorial working, the first thing you should do is make sure that your project is literally the exact same as the google example.

查看更多
家丑人穷心不美
6楼-- · 2019-03-29 06:00

This piece of code did the trick for me (notice 'application' replaced with 'app'):

app = webapp.WSGIApplication(
  [('/', MainHandler),
    ('/upload', UploadHandler),
    ('/serve/([^/]+)?', ServeHandler),
  ], debug=True)

if __name__ == '__main__':
  run_wsgi_app(app)
查看更多
smile是对你的礼貌
7楼-- · 2019-03-29 06:06

I was getting a 500 error after I copied the code straight off Google's site. None of the above worked.

All I had to do was change the indentation for each line of code (i.e. change the spaces to Tabs) and bingo.

That worked for me.

查看更多
登录 后发表回答