GAE 1.5.5 looks to have some excellent, long-waited for features. However, they're not working for me yet.
I've downloaded and installed GAE 1.5.5, and am using a degenerate "AAA" app to test.
Here's roughly my app.yaml (with various changes having been made for testing).
application: AAA # mystical creation.
version: alpha-1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /media
static_dir: media/
- url: /favicon.ico
static_files: media/images/favicon.ico
upload: media/images/favicon.ico
- url: /admin
script: AAA.app
login: admin
- url: /.*
script: AAA.app
skip_files:
- ^(.*/)?app\.yaml
libraries:
- name: django
version: "1.2"
- name: jinja2
version: latest
- name: yaml
version: latest
I'm running this on Mac OS X Lion (10.7.1).
I hypothesize that I am not actually using the Python 2.7 runtime, in spite of the declaration in app.yaml to use it. I'm not quite sure how to validate this theory, but the errors I've encountered are consistent with it. These errors are reproduced below.
When Google App Engine's Python Path is not set, the app engine runs using Python 2.6.6.
To fix this I set Python Path to /usr/bin/python2.7
in the Google App
Engine preferences.
I get the following error:
/Applications/GoogleAppEngineLauncher.app/Contents/Resources/
GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/
google/appengine/tools/dev_appserver.py in
GetParentPackage(self=<google.appengine.tools.dev_appserver.HardenedModulesHook
object>, fullname='AAA.app')
2334
2335 if self.find_module(fullname) is None:
=> 2336 raise ImportError('Could not find module %s' %
fullname)
2337
2338 return self._module_dict[parent_module_fullname]
builtin ImportError = <type 'exceptions.ImportError'>, fullname =
'AAA.app'
<type 'exceptions.ImportError'>: Could not find module AAA.app
args = ('Could not find module AAA.app',)
message = 'Could not find module AAA.app'
Where I've tried AAA.app as:
from google.appengine.dist import use_library
use_library('django', '1.2') # otherwise we still get django 0.96
from django.core.handlers import wsgi
app = wsgi.WSGIHandler()
__init__.py
# same content as above
# same content as above
Note that I can continue to run CGI with app.yaml and AAA.py modified, mutatis mutandis. However doing so nevertheless results in those errors below:
When I run import jinja2
I get an ImportError
.
Without:
from google.appengine.dist import use_library
use_library('django', '1.2')
I end up with Django 0.96.
Given the following:
I believe I am not really using the Python 2.7 GAE runtime (i.e. the app.yaml declaration is being ignored in the GAE 1.5.5 SDK).
I hope the above is a helpful description, and I'd be grateful for any thoughts as to what may be happening here – and potential solutions.
I'm have the same issue but on Windows, I posted on the Google App Engine forum and here is an official response I got:
The Dev server doesn't support 2.7 yet. Currently the only way to test 2.7 based code is on appengine
You can use the 2.7 runtime with the local SDK, but just not in threadsafe mode, or with your application defined like script: your.app
. Instead use script: your_main_script.py
.
For jinja2 and webapp2 which aren't available in the SDK, you can download them and place them in the SDK base directory, which is by default added to sys.path.
You won't be able to test the multithreading capabilities, but you can do everything else, and simply make the changes to app.yaml
and your_main_script.py
before you deploy.
EDIT: Also, I had to do os.environ[u'APPENGINE_RUNTIME'] = u'python27'
in my your_main_script.py
, to force the SDK to use webapp2.
Allbuttonspressed has recently posted this handy guide;
you can rundev_appserver
on Python27 with threadsafe
set to yes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With