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.dipie...@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+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