The setup.py never has to go back to the Unix interpreter after spawning the process for downloading DS9 if using subprocess.check_call() instead of subprocess.Popen
Detailed installation instructions