Lubuntu Raring Ringtail. I want to be able to execute my scripts with ./

I start my python script with #!/usr/bin/python and it says

bash : ./myscript.py: /usr/bin/python^M: bad interpreter: No such file or directory

If I use #!/usr/bin/env python it gives a similar error:

: No such file or directory

What am I doing wrong?

I absolutely have python installed, and can run the scripts as normal with python myscript.py


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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.