I’m a python newbie and starting out with using the Bottle web framework on Google App Engine. I’ve been messing with the super small, super easy Hello World sample and have already ran into problems. Heh. I finally got the code to work with this…
import bottle
from bottle import route
from google.appengine.ext.webapp import util
@route('/')
def index():
return "Hello World!"
util.run_wsgi_app(bottle.default_app())
My question is, I thought I could just go ‘import bottle’ without the second line. But if I take the second line out, I get a NameError. Or if I do ‘from bottle import *’, I still get the error. bottle is just a single file called ‘bottle.py’ in my site’s root directory. So neither of these work….
import bottle
from google.appengine.ext.webapp import util
@route('/')
def index():
return "Hello World!"
util.run_wsgi_app(bottle.default_app())
Or
from bottle import *
from google.appengine.ext.webapp import util
@route('/')
def index():
return "Hello World!"
util.run_wsgi_app(bottle.default_app())
The error message I get is…
Traceback (most recent call last):
File
“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py”,
line 3180, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict) File
“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py”,
line 3123, in _Dispatch
base_env_dict=env_dict) File “/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py”,
line 515, in Dispatch
base_env_dict=base_env_dict) File
“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py”,
line 2382, in Dispatch
self._module_dict) File “/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py”,
line 2292, in ExecuteCGI
reset_modules = exec_script(handler_path, cgi_path,
hook) File
“/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py”,
line 2188, in ExecuteOrImportScript
exec module_code in script_module.dict File
“/Users/tyler/Dropbox/sites/dietgrid/code2.py”,
line 4, in
@route(‘/’) NameError: name ‘route’ is not defined
So am I wrong in thinking it should be able to work the other ways or no?
In your code you have two different ways of calling methods from bottle package.
and
First call requires
from bottle import routeorfrom bottle import *and second one requiresimport bottle.from foo import baris letting you to use method or parameterbarin your code without specifying the package on each call.