Guessing here: your code shows
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
So locally you have some packages installed in manage.py's parent directory, but that's not the case in Heroku.
Just to debug, I would also add
import sys
print sys.path
to the very top of manage.py, and compare outputs. You can look for your modules in the output of the local run, and then heroku run bash
and look at what's in the directories printed by the remote run.