Okay, with Web2py and GAE, there are a couple main ways to do development.
One is to develop using strictly Web2py, and test your application on GAE. The other is to download the GAE local server, and develop on GAE from the start.
I opted to develop using strictly Web2py, since writing to the file system is part of development, but restricted by GAE. Since Web2py uses an abstraction layer to hide the differences between the backend layer (GAE, shared hosting, Amazon’s cloud, etc), I reasoned that I should be able to develop in Web2py and deploy to GAE with minimal impact to my code.
Yes, I will then have to thoroughly test the application on GAE to make sure that some part of the mapping between the abstraction layer and GAE isn’t broken. But testing is always a good idea.
I’m not sure yet how this will impact some of the features that will be very different on GAE. For example, part of my site will have involve file upload. You can’t write to the file system on GAE, so you end up storing the files in the datastore. I’m not sure yet if the Web2py abstraction layer handles this transparently or not.