I use subprocess.Popen a lot to run shell commands from Python. There is no need for a specific web2py feature.
This is the method I use whenever I need to call something: import subprocess def run_command(self, *args): """ Returns the output of a command as a tuple (output, error). """ p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) return p.communicate() It's very simple to use: output, error = run_command('python', 'my_script.py', 'arg1', 'arg2', ...) This runs the command, waits for it to exit, and then you have a string "output" for the output from the command, and a string "error" for any error output from the command.