Executing script from shell problem [duplicate]

From the ^M you can see that the file myscript.py is using windows/dos-style line breaks (Windows uses CR LF (carriage return + line feed) at the end of a line. Unix only uses LF - so what you see as ^M is the CR. So what you are not using /usr/bin/python but /usr/bin/python<CR> that does not exist.

You can remove the ^M using dos2unix (do a sudo apt-get install dos2unix to install and then use dos2unix myscript.py).


Do this, then try your Python script:

$ tr -d '\r' < test.py > newtest.py

This removes the carriage returns created from Windows

To further reading, Remove Windows carriage returns with tr