In the words of Heroku themselves:
Heroku apps expect the app directory structure at the root of the repository. If your app is inside a subdirectory in your repository, it won’t run when pushed to Heroku.
This is obviously a problem if you've already created your project structure and don't particularly feel it's ok that Heroku dictate you change it.
So..to fix it, we use the new(ish) git subtree module which was committed to the mainline git branch in April 2012. This basically allows us to push just a subdirectory of your repo to heroku during deployment.
Given this project structure:
--/ ----/.git ----/build ----/docs ----/pythonapp ----/----/requirements.txt
From the root of your repo, you can run the following command:
git subtree push --prefix pythonapp heroku master
This will push just the pythonapp folder to the remote.
If you wish to read more about the subtree module, this article is a great start as it's from the author of the module itself.