You're right, web2py **should** at some point provide pypi packages. Bonus points to niphlod being the first one who asked years ago :P
For the time being, I really don't see the issue: either you want to help with web2py development OR you want to develop your app.
In the former case, you use web2py and commit to your repo (forked from web2py's master), and then do a simple PR.
In the latter (which it seems your case), you have only your application's code in source control.
If you want to deploy a given release of your app, all you need is to pull your newly changed code into your application's directory, which happens to be inside web2py's folder. First step aside (installing web2py), it's really a non-issue.
First step being: "I download the web2py source and put under a directory" rather than "I install it using pip".
Upgrading web2py couldn't be easier: delete everything BUT your app's code, take the new archive and decompress where it was.
Upgrading your apps too doesn't differ: simplest way is pull directly new code from source control to the production dir.
More "finer" (and a bit more complicated) workflows, such as:
- pulling the code in another dir (working)
- put the app in maintenance (place a file called DISABLED in the app's root)
- rename working dir to production dir
- remove the DISABLED file
- compile the app
are equally easy to implement.
Unzipping vs pip-installing is really a matter of yourself figuring out the destination dirs instead of letting pip (or your virtualenv) choosing where to put stuff into.