I'm trying to run Python scripts with a shebang on Ubuntu. When I create a python script

    #! /usr/bin/env python
    import sys

... and run it I get a shell error:

    root@host:/home/user# ./test.py
    : No such file or directory

How can I make it work?

Solution: Remove '\r's from line endings with dos2unix.


I assume the script is executable? Also, check for carriage returns -- maybe windows got its dirty little hands on it? You can check this with 'cat -vE test.py' and look for '\r'.

| improve this answer | |

You probably have windows line endings on your file. Please try running dos2unix on it.

| improve this answer | |
  • Yes, it was line endings, I used vi, I'm sure dos2unix would work too. – Alex May 22 '09 at 15:11

Try removing the space between #! and /usr/bin/env, though I don't get why that would work when not importing packages...

| improve this answer | |
  • You are right, I checked, it also does not work when not importing. – Alex May 22 '09 at 14:11
  • It also won't start with no space. – Alex May 22 '09 at 14:21

Are you sure that the error is happening for the reason you think? Or are you (later in the script) trying to open a file? Start with the simplest case to get things working...


#!/usr/bin/env python
print "Hello, world"


$ chmod +x hello.py
$ ./hello.py
Hello, world
| improve this answer | |

Use the below one liners to remove the new line characters.

perl -e 's/\r//g' -w -p -i test.py


sed -e "s/^M//" test.py > test_new.py

| improve this answer | |

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.