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 <mdipie...@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 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