Why do people write #!/usr/bin/env python on the first line of a Python script?

john garcias picture john garcias · Mar 12, 2010 · Viewed 772.8k times · Source

It seems to me like the files run the same without that line.

Answer

Alex Martelli picture Alex Martelli · Mar 12, 2010

If you have several versions of Python installed, /usr/bin/env will ensure the interpreter used is the first one on your environment's $PATH. The alternative would be to hardcode something like #!/usr/bin/python; that's ok, but less flexible.

In Unix, an executable file that's meant to be interpreted can indicate what interpreter to use by having a #! at the start of the first line, followed by the interpreter (and any flags it may need).

If you're talking about other platforms, of course, this rule does not apply (but that "shebang line" does no harm, and will help if you ever copy that script to a platform with a Unix base, such as Linux, Mac, etc).