# Command line and environment

The CPython interpreter scans the command line and the environment for various settings.

## Command line

When invoking Python, you may specify any of these options:

python [-bBdEhiOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]


The most common use case is, of course, a simple invocation of a script:

python myscript.py


### Interface options

The interpreter interface resembles that of the UNIX shell, but provides some additional methods of invocation:

• When called with standard input connected to a tty device, it prompts for commands and executes them until an EOF (an end-of-file character, you can produce that with Ctrl-D on UNIX or Ctrl-Z, Enter on Windows) is read.
• When called with a file name argument or with a file as standard input, it reads and executes a script from that file.
• When called with a directory name argument, it reads and executes an appropriately named script from that directory.
• When called with -c command, it executes the Python statement(s) given as command. Here command may contain multiple statements separated by newlines. Leading whitespace is significant in Python statements!
• When called with -m module-name, the given module is located on the Python module path and executed as a script.

In non-interactive mode, the entire input is parsed before it is executed.

An interface option terminates the list of options consumed by the interpreter, all consecutive arguments will end up in :data:sys.argv -- note that the first element, subscript zero (sys.argv[0]), is a string reflecting the program's source.

If no interface option is given, :option:-i is implied, sys.argv[0] is an empty string ("") and the current directory will be added to the start of :data:sys.path. Also, tab-completion and history editing is automatically enabled, if available on your platform (see :ref:rlcompleter-config).

## Environment variables

These environment variables influence Python's behavior, they are processed before the command-line switches other than -E. It is customary that command-line switches override environmental variables where there is a conflict.

### Debug-mode variables

Setting these variables only has an effect in a debug build of Python, that is, if Python was configured with the --with-pydebug build option.