Ah, I see. That's what I suspected. Thank you again for all your help!
On Dec 8, 2015 6:41 AM, "Massimo Di Pierro" <massimo.dipie...@gmail.com>
wrote:

> from the point of view of GAE, web2py is one app so all the applications/*
> will be deployed and share the same datastore which is a nightmare. This is
> why in app.yaml you should make sure only one of the application is
> deployed. You can have multiple app.yaml to deploy multiple folders.
>
> On Tuesday, 8 December 2015 03:15:55 UTC-6, Brad Cardello wrote:
>>
>> Thank you very much for both of your help. I got it to work by adding a
>> routes.py file to my web2py folder, and forcing it to open up to the
>> correct app.
>>
>> One last question, how would I go about deploying multiple apps from the
>> same applications/ folder? Would I need multiple app.yaml, etc. files?
>> Excuse my complete noobiness, but I'm glad to be learning it!
>> On Dec 8, 2015 12:54 AM, "Ramkrishan Bhatt" <ramkrishan.bh...@gmail.com>
>> wrote:
>>
>>> You need to select complete web2py folder. Also you need to remove Admin
>>> app from applications. There is one routes.py where you can configure your
>>> default application to be called.
>>>
>>>
>>> On Tuesday, 8 December 2015 13:55:22 UTC+5:30, Brad Cardello wrote:
>>>>
>>>> Alright, so I changed the name from web2py-class to web2py, and I moved
>>>> app.yaml and gaehandler.py to the same level as applications and gluon/ but
>>>> Google App Engine Launcher refuses to run it, saying that it could not find
>>>> app.yaml in the specific application I want it to run. I'm selecting my
>>>> actual app (i.e.: web2py/applications/myappname), should I just be
>>>> selecting web2py or web2py/applications? Thank you again for the 
>>>> assistance.
>>>>
>>>> On Mon, Dec 7, 2015 at 9:00 PM, Massimo Di Pierro <
>>>> massimo....@gmail.com> wrote:
>>>>
>>>>> The easiest setup is if you have web2py/ and web2py/applications/
>>>>> under it. It really does not matter if it is called web2py or not but it
>>>>> matters that web2py.py and gaehandler.py and gluon/ are at the same level
>>>>> as applications.
>>>>>
>>>>> You can put your applications in a different folder but this requires
>>>>> changing default parameters in examples/options_std.py. I would  not
>>>>> recommend that to a new user.
>>>>>
>>>>> Massimo
>>>>>
>>>>>
>>>>>
>>>>> On Monday, 7 December 2015 19:38:15 UTC-6, Brad Cardello wrote:
>>>>>>
>>>>>> Ah, thank you for the advice on removing main.py. And my folder
>>>>>> structure is similar to that, with one change. I don't quite remember if
>>>>>> this is something I did manually per my instructor's advice, but instead 
>>>>>> of
>>>>>> web2py/, my folder is called web2py-class. I do have a folder called 
>>>>>> web2py
>>>>>> located elsewhere on my computer, though. Should I move my application 
>>>>>> from
>>>>>> web2py-class/applications/ to web2py/applications? Thank you so much.
>>>>>>
>>>>>> On Monday, December 7, 2015 at 6:57:31 AM UTC-8, Massimo Di Pierro
>>>>>> wrote:
>>>>>>>
>>>>>>> You should not need that main.py in web2py. web2py does not uses
>>>>>>> webapp2. You only need app.py and gaehandler.py They look correct. The
>>>>>>> error is from this lines in gaehandler:
>>>>>>>
>>>>>>>
>>>>>>> if not os.path.isdir('applications'):
>>>>>>>     raise RuntimeError('Running from the wrong folder')
>>>>>>>
>>>>>>>
>>>>>>> Do you have the correct folder structure?
>>>>>>>
>>>>>>> web2py/
>>>>>>>    app.yaml
>>>>>>>    gaehandler.py
>>>>>>>    web2py.py
>>>>>>>    applications/...
>>>>>>>    gluon/...
>>>>>>>    [etc etc]
>>>>>>>
>>>>>>>
>>>>>>> On Monday, 7 December 2015 06:40:49 UTC-6, Brad Cardello wrote:
>>>>>>>>
>>>>>>>> Hey everyone, I'm still fairly new to web2py, and completely new to
>>>>>>>> deploying my website (developed using PyCharm, if that matters). So, 
>>>>>>>> here's
>>>>>>>> the error I'm getting in the logs whenever I try to access my website:
>>>>>>>>
>>>>>>>> Traceback (most recent call last):
>>>>>>>>>
>>>>>>>>>   File "C:\Program Files
>>>>>>>>> (x86)\Google\google_appengine\google\appengine\runtime\wsgi.py", line 
>>>>>>>>> 240,
>>>>>>>>> in Handle
>>>>>>>>>
>>>>>>>>>     handler =
>>>>>>>>> _config_handle.add_wsgi_middleware(self._LoadHandler())
>>>>>>>>>
>>>>>>>>>   File "C:\Program Files
>>>>>>>>> (x86)\Google\google_appengine\google\appengine\runtime\wsgi.py", line 
>>>>>>>>> 299,
>>>>>>>>> in _LoadHandler
>>>>>>>>>
>>>>>>>>>     handler, path, err = LoadObject(self._handler)
>>>>>>>>>
>>>>>>>>>   File "C:\Program Files
>>>>>>>>> (x86)\Google\google_appengine\google\appengine\runtime\wsgi.py", line 
>>>>>>>>> 85,
>>>>>>>>> in LoadObject
>>>>>>>>>
>>>>>>>>>     obj = __import__(path[0])
>>>>>>>>>
>>>>>>>>>   File "C:\Users\Brad Cardello\Desktop\Computer
>>>>>>>>> Science\CMPS-183\web2py-class\applications\WebUcscTutor\gaehandler.py",
>>>>>>>>> line 40, in <module>
>>>>>>>>>
>>>>>>>>>     raise RuntimeError('Running from the wrong folder')
>>>>>>>>>
>>>>>>>>> RuntimeError: Running from the wrong folder
>>>>>>>>>
>>>>>>>>> INFO     2015-12-07 01:10:16,092 module.py:787] default: "GET /
>>>>>>>>> HTTP/1.1" 500 -
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> I'm really not sure why this is happening, as it gives me this
>>>>>>>> error no matter where gaehandler.py is located in my file system. At 
>>>>>>>> the
>>>>>>>> moment, per multiple people's instructions, my app.yaml, 
>>>>>>>> gaehandler.py, and
>>>>>>>> main.py are all in the root directory for my project
>>>>>>>> (/web2py-class/applications/WebUcscTutor). I've tried moving it to
>>>>>>>> web2py-class/applications, and web2py-class, but nothing seems to 
>>>>>>>> change
>>>>>>>> this error.
>>>>>>>>
>>>>>>>> Here's my *app.yaml*
>>>>>>>>
>>>>>>>> #  For Google App Engine deployment, copy this file to app.yaml
>>>>>>>> #  and edit as required
>>>>>>>> #  See 
>>>>>>>> http://code.google.com/appengine/docs/python/config/appconfig.html
>>>>>>>> #  and http://web2py.com/book/default/chapter/11?search=app.yaml
>>>>>>>>
>>>>>>>> application: ucsc-tutor-website
>>>>>>>> version: 1
>>>>>>>> api_version: 1
>>>>>>>>
>>>>>>>> # use these lines for Python 2.7
>>>>>>>> # upload app with: appcfg.py update web2py (where 'web2py' is web2py's 
>>>>>>>> root directory)
>>>>>>>> #
>>>>>>>> runtime: python27
>>>>>>>> threadsafe: true    # true for WSGI & concurrent requests (Python 2.7 
>>>>>>>> only)
>>>>>>>>
>>>>>>>> default_expiration: "1m"   # for static files
>>>>>>>>
>>>>>>>> handlers:
>>>>>>>>
>>>>>>>> # Warning! Static mapping - below - isn't compatible with
>>>>>>>> # the parametric router's language logic.
>>>>>>>> # You cannot use them together.
>>>>>>>>
>>>>>>>> - url: /(.+?)/static/_(\d+\.\d+\.\d+)\/(.+)
>>>>>>>>   static_files: applications/\1/static/\3
>>>>>>>>   upload: applications/(.+?)/static/(.+)
>>>>>>>>   secure: optional
>>>>>>>>   expiration: "365d"
>>>>>>>>
>>>>>>>> - url: /(.+?)/static/(.+)
>>>>>>>>   static_files: applications/\1/static/\2
>>>>>>>>   upload: applications/(.+?)/static/(.+)
>>>>>>>>   secure: optional
>>>>>>>>
>>>>>>>> - url: /favicon.ico
>>>>>>>>   static_files: applications/welcome/static/favicon.ico
>>>>>>>>   upload: applications/welcome/static/favicon.ico
>>>>>>>>
>>>>>>>> - url: /robots.txt
>>>>>>>>   static_files: applications/welcome/static/robots.txt
>>>>>>>>   upload: applications/welcome/static/robots.txt
>>>>>>>>
>>>>>>>> - url: .*
>>>>>>>>   script: gaehandler.wsgiapp    # WSGI (Python 2.7 only)
>>>>>>>>   secure: optional
>>>>>>>>
>>>>>>>> admin_console:
>>>>>>>>   pages:
>>>>>>>>   - name: Appstats
>>>>>>>>     url: /_ah/stats
>>>>>>>>
>>>>>>>> skip_files: |
>>>>>>>>  ^(.*/)?(
>>>>>>>>  (app\.yaml)|
>>>>>>>>  (app\.yml)|
>>>>>>>>  (index\.yaml)|
>>>>>>>>  (index\.yml)|
>>>>>>>>  (#.*#)|
>>>>>>>>  (.*~)|
>>>>>>>>  (.*\.py[co])|
>>>>>>>>  (.*/RCS/.*)|
>>>>>>>>  (\..*)|
>>>>>>>>  (applications/examples/.*)|
>>>>>>>>  ((examples|welcome)\.(w2p|tar))|
>>>>>>>>  (applications/.*?/(cron|databases|errors|cache|sessions)/.*)|
>>>>>>>>  ((logs|scripts)/.*)|
>>>>>>>>  (anyserver\.py)|
>>>>>>>>  (web2py\.py)|
>>>>>>>>  ((cgi|fcgi|modpython|wsgi)handler\.py)|
>>>>>>>>  (epydoc\.(conf|css))|
>>>>>>>>  (httpserver\.log)|
>>>>>>>>  (logging\.example\.conf)|
>>>>>>>>  (route[rs]\.example\.py)|
>>>>>>>>  (setup_(app|exe)\.py)|
>>>>>>>>  (splashlogo\.gif)|
>>>>>>>>  (parameters_\d+\.py)|
>>>>>>>>  (options_std.py)|
>>>>>>>>  (gluon/tests/.*)|
>>>>>>>>  (gluon/rocket\.py)|
>>>>>>>>  (contrib/(gateways|markdown|memcache|pymysql)/.*)|
>>>>>>>>  (contrib/(populate|taskbar_widget)\.py)|
>>>>>>>>  (google_appengine/.*)|
>>>>>>>>  (.*\.(bak|orig))|
>>>>>>>>  )$
>>>>>>>>
>>>>>>>> builtins:
>>>>>>>> - remote_api: on
>>>>>>>> - appstats: on
>>>>>>>> - admin_redirect: on
>>>>>>>> - deferred: on
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Here's my *gaehandler.py*:
>>>>>>>>
>>>>>>>> #!/usr/bin/env python
>>>>>>>> # -*- coding: utf-8 -*-
>>>>>>>>
>>>>>>>> """
>>>>>>>> This file is part of the web2py Web Framework
>>>>>>>> Copyrighted by Massimo Di Pierro <mdip...@cs.depaul.edu>
>>>>>>>> License: LGPLv3 (http://www.gnu.org/licenses/lgpl.html)
>>>>>>>> """
>>>>>>>>
>>>>>>>> ##############################################################################
>>>>>>>> # Configuration parameters for Google App Engine
>>>>>>>> ##############################################################################
>>>>>>>> LOG_STATS = False      # web2py level log statistics
>>>>>>>> APPSTATS = True         # GAE level usage statistics and profiling
>>>>>>>> DEBUG = False          # debug mode
>>>>>>>> #
>>>>>>>> # Read more about APPSTATS here
>>>>>>>> #   
>>>>>>>> http://googleappengine.blogspot.com/2010/03/easy-performance-profiling-with.html
>>>>>>>> # can be accessed from:
>>>>>>>> #   http://localhost:8080/_ah/stats
>>>>>>>> ##############################################################################
>>>>>>>> # All tricks in this file developed by Robin Bhattacharyya
>>>>>>>> ##############################################################################
>>>>>>>>
>>>>>>>>
>>>>>>>> import time
>>>>>>>> import os
>>>>>>>> import sys
>>>>>>>> import logging
>>>>>>>> import cPickle
>>>>>>>> import pickle
>>>>>>>> import wsgiref.handlers
>>>>>>>> import datetime
>>>>>>>>
>>>>>>>> path = os.path.dirname(os.path.abspath(__file__))
>>>>>>>>
>>>>>>>> # os.chdir(path) ?
>>>>>>>>
>>>>>>>> if not os.path.isdir('applications'):
>>>>>>>>     raise RuntimeError('Running from the wrong folder')
>>>>>>>>
>>>>>>>> sys.path = [path] + [p for p in sys.path if not p == path]
>>>>>>>>
>>>>>>>> sys.modules['cPickle'] = sys.modules['pickle']
>>>>>>>>
>>>>>>>>
>>>>>>>> from gluon.settings import global_settings
>>>>>>>> from google.appengine.ext import webapp
>>>>>>>> from google.appengine.ext.webapp.util import run_wsgi_app
>>>>>>>>
>>>>>>>>
>>>>>>>> global_settings.web2py_runtime_gae = True
>>>>>>>> global_settings.db_sessions = True
>>>>>>>> if os.environ.get('SERVER_SOFTWARE', '').startswith('Devel'):
>>>>>>>>     (global_settings.web2py_runtime, DEBUG) = \
>>>>>>>>         ('gae:development', True)
>>>>>>>> else:
>>>>>>>>     (global_settings.web2py_runtime, DEBUG) = \
>>>>>>>>         ('gae:production', False)
>>>>>>>>
>>>>>>>>
>>>>>>>> import gluon.main
>>>>>>>>
>>>>>>>>
>>>>>>>> def log_stats(fun):
>>>>>>>>     """Function that will act as a decorator to make logging"""
>>>>>>>>     def newfun(env, res):
>>>>>>>>         """Log the execution time of the passed function"""
>>>>>>>>         timer = lambda t: (t.time(), t.clock())
>>>>>>>>         (t0, c0) = timer(time)
>>>>>>>>         executed_function = fun(env, res)
>>>>>>>>         (t1, c1) = timer(time)
>>>>>>>>         log_info = """**** Request: %.2fms/%.2fms (real time/cpu 
>>>>>>>> time)"""
>>>>>>>>         log_info = log_info % ((t1 - t0) * 1000, (c1 - c0) * 1000)
>>>>>>>>         logging.info(log_info)
>>>>>>>>         return executed_function
>>>>>>>>     return newfun
>>>>>>>>
>>>>>>>>
>>>>>>>> logging.basicConfig(level=logging.INFO)
>>>>>>>>
>>>>>>>>
>>>>>>>> def wsgiapp(env, res):
>>>>>>>>     """Return the wsgiapp"""
>>>>>>>>     env['PATH_INFO'] = env['PATH_INFO'].decode('latin1').encode('utf8')
>>>>>>>>
>>>>>>>>     #when using the blobstore image uploader GAE dev SDK passes these 
>>>>>>>> as unicode
>>>>>>>>     # they should be regular strings as they are parts of URLs
>>>>>>>>     env['wsgi.url_scheme'] = str(env['wsgi.url_scheme'])
>>>>>>>>     env['QUERY_STRING'] = str(env['QUERY_STRING'])
>>>>>>>>     env['SERVER_NAME'] = str(env['SERVER_NAME'])
>>>>>>>>
>>>>>>>>     #this deals with a problem where GAE development server seems to 
>>>>>>>> forget
>>>>>>>>     # the path between requests
>>>>>>>>     if global_settings.web2py_runtime == 'gae:development':
>>>>>>>>         gluon.admin.create_missing_folders()
>>>>>>>>
>>>>>>>>     web2py_path = global_settings.applications_parent  # backward 
>>>>>>>> compatibility
>>>>>>>>
>>>>>>>>     return gluon.main.wsgibase(env, res)
>>>>>>>>
>>>>>>>>
>>>>>>>> if LOG_STATS or DEBUG:
>>>>>>>>     wsgiapp = log_stats(wsgiapp)
>>>>>>>>
>>>>>>>>
>>>>>>>> def main():
>>>>>>>>     """Run the wsgi app"""
>>>>>>>>     run_wsgi_app(wsgiapp)
>>>>>>>>
>>>>>>>> if __name__ == '__main__':
>>>>>>>>     main()
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> And here's *main.py* (generated by PyCharm):
>>>>>>>>
>>>>>>>> #!/usr/bin/env python
>>>>>>>> #
>>>>>>>> # Copyright 2007 Google Inc.
>>>>>>>> #
>>>>>>>> # Licensed under the Apache License, Version 2.0 (the "License");
>>>>>>>> # you may not use this file except in compliance with the License.
>>>>>>>> # You may obtain a copy of the License at
>>>>>>>> #
>>>>>>>> #     http://www.apache.org/licenses/LICENSE-2.0
>>>>>>>> #
>>>>>>>> # Unless required by applicable law or agreed to in writing, software
>>>>>>>> # distributed under the License is distributed on an "AS IS" BASIS,
>>>>>>>> # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
>>>>>>>> implied.
>>>>>>>> # See the License for the specific language governing permissions and
>>>>>>>> # limitations under the License.
>>>>>>>> #
>>>>>>>> import webapp2
>>>>>>>>
>>>>>>>> class MainHandler(webapp2.RequestHandler):
>>>>>>>>     def get(self):
>>>>>>>>         self.response.write('Hello world!')
>>>>>>>>
>>>>>>>> app = webapp2.WSGIApplication([
>>>>>>>>     ('/', MainHandler)
>>>>>>>> ], debug=True)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Any help would be greatly appreciated! I need this deployed by
>>>>>>>> Wednesday (12/9)
>>>>>>>>
>>>>>>> --
>>>>> Resources:
>>>>> - http://web2py.com
>>>>> - http://web2py.com/book (Documentation)
>>>>> - http://github.com/web2py/web2py (Source code)
>>>>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>>>>> ---
>>>>> You received this message because you are subscribed to a topic in the
>>>>> Google Groups "web2py-users" group.
>>>>> To unsubscribe from this topic, visit
>>>>> https://groups.google.com/d/topic/web2py/tcjBN0qZQ7k/unsubscribe.
>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>> web2py+un...@googlegroups.com.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>> --
>>> Resources:
>>> - http://web2py.com
>>> - http://web2py.com/book (Documentation)
>>> - http://github.com/web2py/web2py (Source code)
>>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>>> ---
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "web2py-users" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/web2py/tcjBN0qZQ7k/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> web2py+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "web2py-users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/web2py/tcjBN0qZQ7k/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to