I initially tried using py2app/py2exe/cx_Freeze, but stuff kept crashing. They're trying to do something considerably more complicated than my 90 LOC bash script; namely trying to bundle your application, it's dependencies and the python interpreter into one package.
This bash script just gives you a python interpreter that should run on any system. From there, your install script can setup a virtualenv, grab dependencies and do whatever else.