How do I make a Python script executable on Unix?
You need to do two things: the script file’s mode must be executable and the first line must begin with #! followed by the path of the Python interpreter.
The first is done by executing “chmod +x scriptfile” or perhaps “chmod 755 scriptfile.
$ chmod +x myscript.py
The second can be done in a number of ways. The most straightforward way is to put
#!/usr/local/bin/pythonas the very first line of your file, using the pathname for where the Python interpreter is installed on your platform.
If you would like the script to be independent of where the Python interpreter lives, you can use the “env” program. Almost all Unix variants support the following, assuming the python interpreter is in a directory on the user’s $PATH:
#! /usr/bin/env pythonDon’t do this for CGI scripts. The $PATH variable for CGI scripts is often very minimal, so you need to use the actual absolute pathname of the interpreter.
Occasionally, a user’s environment is so full that the /usr/bin/env program fails; or there’s no env program at all. In that case, you can try the following hack (due to Alex Rezinsky):
#! /bin/sh """:" exec python $0 ${1+"$@"} """
The minor disadvantage is that this defines the script’s __doc__ string. However, you can fix that by adding
__doc__ = """...Whatever..."""CATEGORY: library
Comment:
Please note that in order to run your Python script from the command line, you either want to make sure it is copied into a directory included in your $PATH or - if it's in the current directory, you call it like this: $ ./my-script.py where the dot ('.') signifies the current directory. The reason for this is that the current directory is normally not included in $PATH for security reasons, so in order for the shall to find your script, you have to specify its exact location.
Posted by Christopher Arndt (2006-11-05)