glenn jackman's answer is correct, but I don't have enough "reputation" to upvote him, so I'll post this here. Your script is in Windows format, in which every line ends with a carriage return and linefeed, instead of just a linefeed. Many programs, including python, can handle either format with no problem. But when you run the script, the shell believes that the carriage return is part of the command name. Instead of running "/usr/bin/env python", your shell is trying to run "/usr/bin/env python^M" (where ^M is a linefeed). You can tell this is the case because of the error message it gives you. Just before "No such file or directory", it prints the name of the program it tried to execute. It printed the linefeed too, which moved the cursor back to the leftmost position in the line, which erased everything before the colon.
If you don't have dos2unix installed, you can remove the linefeeds with
tr -d '\r' < manage.py > manage2.py; mv manage2.py manage.py
You can't read from and write to the same file at the same time, which is why you have to use a temporary file to hold the output of tr
.