Home | History | Annotate | Download | only in using
      1 .. highlightlang:: sh
      2 
      3 .. ATTENTION: You probably should update Misc/python.man, too, if you modify
      4    this file.
      5 
      6 .. _using-on-general:
      7 
      8 Command line and environment
      9 ============================
     10 
     11 The CPython interpreter scans the command line and the environment for various
     12 settings.
     13 
     14 .. impl-detail::
     15 
     16    Other implementations' command line schemes may differ.  See
     17    :ref:`implementations` for further resources.
     18 
     19 
     20 .. _using-on-cmdline:
     21 
     22 Command line
     23 ------------
     24 
     25 When invoking Python, you may specify any of these options::
     26 
     27     python [-BdEiOQsRStuUvVWxX3?] [-c command | -m module-name | script | - ] [args]
     28 
     29 The most common use case is, of course, a simple invocation of a script::
     30 
     31     python myscript.py
     32 
     33 
     34 .. _using-on-interface-options:
     35 
     36 Interface options
     37 ~~~~~~~~~~~~~~~~~
     38 
     39 The interpreter interface resembles that of the UNIX shell, but provides some
     40 additional methods of invocation:
     41 
     42 * When called with standard input connected to a tty device, it prompts for
     43   commands and executes them until an EOF (an end-of-file character, you can
     44   produce that with :kbd:`Ctrl-D` on UNIX or :kbd:`Ctrl-Z, Enter` on Windows) is read.
     45 * When called with a file name argument or with a file as standard input, it
     46   reads and executes a script from that file.
     47 * When called with a directory name argument, it reads and executes an
     48   appropriately named script from that directory.
     49 * When called with ``-c command``, it executes the Python statement(s) given as
     50   *command*.  Here *command* may contain multiple statements separated by
     51   newlines. Leading whitespace is significant in Python statements!
     52 * When called with ``-m module-name``, the given module is located on the
     53   Python module path and executed as a script.
     54 
     55 In non-interactive mode, the entire input is parsed before it is executed.
     56 
     57 An interface option terminates the list of options consumed by the interpreter,
     58 all consecutive arguments will end up in :data:`sys.argv` -- note that the first
     59 element, subscript zero (``sys.argv[0]``), is a string reflecting the program's
     60 source.
     61 
     62 .. cmdoption:: -c <command>
     63 
     64    Execute the Python code in *command*.  *command* can be one or more
     65    statements separated by newlines, with significant leading whitespace as in
     66    normal module code.
     67 
     68    If this option is given, the first element of :data:`sys.argv` will be
     69    ``"-c"`` and the current directory will be added to the start of
     70    :data:`sys.path` (allowing modules in that directory to be imported as top
     71    level modules).
     72 
     73 
     74 .. cmdoption:: -m <module-name>
     75 
     76    Search :data:`sys.path` for the named module and execute its contents as
     77    the :mod:`__main__` module.
     78 
     79    Since the argument is a *module* name, you must not give a file extension
     80    (``.py``).  The ``module-name`` should be a valid Python module name, but
     81    the implementation may not always enforce this (e.g. it may allow you to
     82    use a name that includes a hyphen).
     83 
     84    Package names are also permitted. When a package name is supplied instead
     85    of a normal module, the interpreter will execute ``<pkg>.__main__`` as
     86    the main module. This behaviour is deliberately similar to the handling
     87    of directories and zipfiles that are passed to the interpreter as the
     88    script argument.
     89 
     90    .. note::
     91 
     92       This option cannot be used with built-in modules and extension modules
     93       written in C, since they do not have Python module files. However, it
     94       can still be used for precompiled modules, even if the original source
     95       file is not available.
     96 
     97    If this option is given, the first element of :data:`sys.argv` will be the
     98    full path to the module file. As with the :option:`-c` option, the current
     99    directory will be added to the start of :data:`sys.path`.
    100 
    101    Many standard library modules contain code that is invoked on their execution
    102    as a script.  An example is the :mod:`timeit` module::
    103 
    104        python -mtimeit -s 'setup here' 'benchmarked code here'
    105        python -mtimeit -h # for details
    106 
    107    .. seealso::
    108       :func:`runpy.run_module`
    109          Equivalent functionality directly available to Python code
    110 
    111       :pep:`338` -- Executing modules as scripts
    112 
    113    .. versionadded:: 2.4
    114 
    115    .. versionchanged:: 2.5
    116       The named module can now be located inside a package.
    117 
    118    .. versionchanged:: 2.7
    119       Supply the package name to run a ``__main__`` submodule.
    120       sys.argv[0] is now set to ``"-m"`` while searching for the module
    121       (it was previously incorrectly set to ``"-c"``)
    122 
    123 
    124 .. describe:: -
    125 
    126    Read commands from standard input (:data:`sys.stdin`).  If standard input is
    127    a terminal, :option:`-i` is implied.
    128 
    129    If this option is given, the first element of :data:`sys.argv` will be
    130    ``"-"`` and the current directory will be added to the start of
    131    :data:`sys.path`.
    132 
    133    .. seealso::
    134       :func:`runpy.run_path`
    135          Equivalent functionality directly available to Python code
    136 
    137 
    138 .. describe:: <script>
    139 
    140    Execute the Python code contained in *script*, which must be a filesystem
    141    path (absolute or relative) referring to either a Python file, a directory
    142    containing a ``__main__.py`` file, or a zipfile containing a
    143    ``__main__.py`` file.
    144 
    145    If this option is given, the first element of :data:`sys.argv` will be the
    146    script name as given on the command line.
    147 
    148    If the script name refers directly to a Python file, the directory
    149    containing that file is added to the start of :data:`sys.path`, and the
    150    file is executed as the :mod:`__main__` module.
    151 
    152    If the script name refers to a directory or zipfile, the script name is
    153    added to the start of :data:`sys.path` and the ``__main__.py`` file in
    154    that location is executed as the :mod:`__main__` module.
    155 
    156    .. versionchanged:: 2.5
    157       Directories and zipfiles containing a ``__main__.py`` file at the top
    158       level are now considered valid Python scripts.
    159 
    160 If no interface option is given, :option:`-i` is implied, ``sys.argv[0]`` is
    161 an empty string (``""``) and the current directory will be added to the
    162 start of :data:`sys.path`.
    163 
    164 .. seealso::  :ref:`tut-invoking`
    165 
    166 
    167 Generic options
    168 ~~~~~~~~~~~~~~~
    169 
    170 .. cmdoption:: -?
    171                -h
    172                --help
    173 
    174    Print a short description of all command line options.
    175 
    176    .. versionchanged:: 2.5
    177       The ``--help`` variant.
    178 
    179 
    180 .. cmdoption:: -V
    181                --version
    182 
    183    Print the Python version number and exit.  Example output could be::
    184 
    185        Python 2.5.1
    186 
    187    .. versionchanged:: 2.5
    188       The ``--version`` variant.
    189 
    190 
    191 Miscellaneous options
    192 ~~~~~~~~~~~~~~~~~~~~~
    193 
    194 .. cmdoption:: -B
    195 
    196    If given, Python won't try to write ``.pyc`` or ``.pyo`` files on the
    197    import of source modules.  See also :envvar:`PYTHONDONTWRITEBYTECODE`.
    198 
    199    .. versionadded:: 2.6
    200 
    201 
    202 .. cmdoption:: -d
    203 
    204    Turn on parser debugging output (for wizards only, depending on compilation
    205    options).  See also :envvar:`PYTHONDEBUG`.
    206 
    207 
    208 .. cmdoption:: -E
    209 
    210    Ignore all :envvar:`PYTHON*` environment variables, e.g.
    211    :envvar:`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set.
    212 
    213    .. versionadded:: 2.2
    214 
    215 
    216 .. cmdoption:: -i
    217 
    218    When a script is passed as first argument or the :option:`-c` option is used,
    219    enter interactive mode after executing the script or the command, even when
    220    :data:`sys.stdin` does not appear to be a terminal.  The
    221    :envvar:`PYTHONSTARTUP` file is not read.
    222 
    223    This can be useful to inspect global variables or a stack trace when a script
    224    raises an exception.  See also :envvar:`PYTHONINSPECT`.
    225 
    226 
    227 .. _using-on-optimizations:
    228 .. cmdoption:: -O
    229 
    230    Turn on basic optimizations.  This changes the filename extension for
    231    compiled (:term:`bytecode`) files from ``.pyc`` to ``.pyo``.  See also
    232    :envvar:`PYTHONOPTIMIZE`.
    233 
    234 
    235 .. cmdoption:: -OO
    236 
    237    Discard docstrings in addition to the :option:`-O` optimizations.
    238 
    239 
    240 .. cmdoption:: -Q <arg>
    241 
    242    Division control. The argument must be one of the following:
    243 
    244    ``old``
    245      division of int/int and long/long return an int or long (*default*)
    246    ``new``
    247      new division semantics, i.e. division of int/int and long/long returns a
    248      float
    249    ``warn``
    250      old division semantics with a warning for int/int and long/long
    251    ``warnall``
    252      old division semantics with a warning for all uses of the division operator
    253 
    254    .. seealso::
    255       :file:`Tools/scripts/fixdiv.py`
    256          for a use of ``warnall``
    257 
    258       :pep:`238` -- Changing the division operator
    259 
    260 
    261 .. cmdoption:: -R
    262 
    263    Turn on hash randomization, so that the :meth:`__hash__` values of str,
    264    bytes and datetime objects are "salted" with an unpredictable random value.
    265    Although they remain constant within an individual Python process, they are
    266    not predictable between repeated invocations of Python.
    267 
    268    This is intended to provide protection against a denial-of-service caused by
    269    carefully-chosen inputs that exploit the worst case performance of a dict
    270    construction, O(n^2) complexity.  See
    271    http://www.ocert.org/advisories/ocert-2011-003.html for details.
    272 
    273    Changing hash values affects the order in which keys are retrieved from a
    274    dict.  Although Python has never made guarantees about this ordering (and it
    275    typically varies between 32-bit and 64-bit builds), enough real-world code
    276    implicitly relies on this non-guaranteed behavior that the randomization is
    277    disabled by default.
    278 
    279    See also :envvar:`PYTHONHASHSEED`.
    280 
    281    .. versionadded:: 2.6.8
    282 
    283 
    284 .. cmdoption:: -s
    285 
    286    Don't add the :data:`user site-packages directory <site.USER_SITE>` to
    287    :data:`sys.path`.
    288 
    289    .. versionadded:: 2.6
    290 
    291    .. seealso::
    292 
    293       :pep:`370` -- Per user site-packages directory
    294 
    295 
    296 .. cmdoption:: -S
    297 
    298    Disable the import of the module :mod:`site` and the site-dependent
    299    manipulations of :data:`sys.path` that it entails.
    300 
    301 
    302 .. cmdoption:: -t
    303 
    304    Issue a warning when a source file mixes tabs and spaces for indentation in a
    305    way that makes it depend on the worth of a tab expressed in spaces.  Issue an
    306    error when the option is given twice (:option:`!-tt`).
    307 
    308 
    309 .. cmdoption:: -u
    310 
    311    Force stdin, stdout and stderr to be totally unbuffered.  On systems where it
    312    matters, also put stdin, stdout and stderr in binary mode.
    313 
    314    Note that there is internal buffering in :meth:`file.readlines` and
    315    :ref:`bltin-file-objects` (``for line in sys.stdin``) which is not influenced
    316    by this option.  To work around this, you will want to use
    317    :meth:`file.readline` inside a ``while 1:`` loop.
    318 
    319    See also :envvar:`PYTHONUNBUFFERED`.
    320 
    321 
    322 .. cmdoption:: -v
    323 
    324    Print a message each time a module is initialized, showing the place
    325    (filename or built-in module) from which it is loaded.  When given twice
    326    (:option:`!-vv`), print a message for each file that is checked for when
    327    searching for a module.  Also provides information on module cleanup at exit.
    328    See also :envvar:`PYTHONVERBOSE`.
    329 
    330 
    331 .. cmdoption:: -W arg
    332 
    333    Warning control.  Python's warning machinery by default prints warning
    334    messages to :data:`sys.stderr`.  A typical warning message has the following
    335    form::
    336 
    337        file:line: category: message
    338 
    339    By default, each warning is printed once for each source line where it
    340    occurs.  This option controls how often warnings are printed.
    341 
    342    Multiple :option:`-W` options may be given; when a warning matches more than
    343    one option, the action for the last matching option is performed.  Invalid
    344    :option:`-W` options are ignored (though, a warning message is printed about
    345    invalid options when the first warning is issued).
    346 
    347    Starting from Python 2.7, :exc:`DeprecationWarning` and its descendants
    348    are ignored by default.  The :option:`!-Wd` option can be used to re-enable
    349    them.
    350 
    351    Warnings can also be controlled from within a Python program using the
    352    :mod:`warnings` module.
    353 
    354    The simplest form of argument is one of the following action strings (or a
    355    unique abbreviation) by themselves:
    356 
    357    ``ignore``
    358       Ignore all warnings.
    359    ``default``
    360       Explicitly request the default behavior (printing each warning once per
    361       source line).
    362    ``all``
    363       Print a warning each time it occurs (this may generate many messages if a
    364       warning is triggered repeatedly for the same source line, such as inside a
    365       loop).
    366    ``module``
    367       Print each warning only the first time it occurs in each module.
    368    ``once``
    369       Print each warning only the first time it occurs in the program.
    370    ``error``
    371       Raise an exception instead of printing a warning message.
    372 
    373    The full form of argument is::
    374 
    375        action:message:category:module:line
    376 
    377    Here, *action* is as explained above but only applies to messages that match
    378    the remaining fields.  Empty fields match all values; trailing empty fields
    379    may be omitted.  The *message* field matches the start of the warning message
    380    printed; this match is case-insensitive.  The *category* field matches the
    381    warning category.  This must be a class name; the match tests whether the
    382    actual warning category of the message is a subclass of the specified warning
    383    category.  The full class name must be given.  The *module* field matches the
    384    (fully-qualified) module name; this match is case-sensitive.  The *line*
    385    field matches the line number, where zero matches all line numbers and is
    386    thus equivalent to an omitted line number.
    387 
    388    .. seealso::
    389       :mod:`warnings` -- the warnings module
    390 
    391       :pep:`230` -- Warning framework
    392 
    393       :envvar:`PYTHONWARNINGS`
    394 
    395 
    396 .. cmdoption:: -x
    397 
    398    Skip the first line of the source, allowing use of non-Unix forms of
    399    ``#!cmd``.  This is intended for a DOS specific hack only.
    400 
    401    .. note:: The line numbers in error messages will be off by one.
    402 
    403 .. cmdoption:: -3
    404 
    405    Warn about Python 3.x possible incompatibilities by emitting a
    406    :exc:`DeprecationWarning` for features that are removed or significantly
    407    changed in Python 3.
    408 
    409    .. versionadded:: 2.6
    410 
    411 Options you shouldn't use
    412 ~~~~~~~~~~~~~~~~~~~~~~~~~
    413 
    414 .. cmdoption:: -J
    415 
    416    Reserved for use by Jython_.
    417 
    418 .. _Jython: http://www.jython.org/
    419 
    420 .. cmdoption:: -U
    421 
    422    Turns all string literals into unicodes globally.  Do not be tempted to use
    423    this option as it will probably break your world.  It also produces
    424    ``.pyc`` files with a different magic number than normal.  Instead, you can
    425    enable unicode literals on a per-module basis by using::
    426 
    427         from __future__ import unicode_literals
    428 
    429    at the top of the file.  See :mod:`__future__` for details.
    430 
    431 .. cmdoption:: -X
    432 
    433     Reserved for alternative implementations of Python to use for their own
    434     purposes.
    435 
    436 .. _using-on-envvars:
    437 
    438 Environment variables
    439 ---------------------
    440 
    441 These environment variables influence Python's behavior, they are processed
    442 before the command-line switches other than -E.  It is customary that
    443 command-line switches override environmental variables where there is a
    444 conflict.
    445 
    446 .. envvar:: PYTHONHOME
    447 
    448    Change the location of the standard Python libraries.  By default, the
    449    libraries are searched in :file:`{prefix}/lib/python{version}` and
    450    :file:`{exec_prefix}/lib/python{version}`, where :file:`{prefix}` and
    451    :file:`{exec_prefix}` are installation-dependent directories, both defaulting
    452    to :file:`/usr/local`.
    453 
    454    When :envvar:`PYTHONHOME` is set to a single directory, its value replaces
    455    both :file:`{prefix}` and :file:`{exec_prefix}`.  To specify different values
    456    for these, set :envvar:`PYTHONHOME` to :file:`{prefix}:{exec_prefix}`.
    457 
    458 
    459 .. envvar:: PYTHONPATH
    460 
    461    Augment the default search path for module files.  The format is the same as
    462    the shell's :envvar:`PATH`: one or more directory pathnames separated by
    463    :data:`os.pathsep` (e.g. colons on Unix or semicolons on Windows).
    464    Non-existent directories are silently ignored.
    465 
    466    In addition to normal directories, individual :envvar:`PYTHONPATH` entries
    467    may refer to zipfiles containing pure Python modules (in either source or
    468    compiled form). Extension modules cannot be imported from zipfiles.
    469 
    470    The default search path is installation dependent, but generally begins with
    471    :file:`{prefix}/lib/python{version}` (see :envvar:`PYTHONHOME` above).  It
    472    is *always* appended to :envvar:`PYTHONPATH`.
    473 
    474    An additional directory will be inserted in the search path in front of
    475    :envvar:`PYTHONPATH` as described above under
    476    :ref:`using-on-interface-options`. The search path can be manipulated from
    477    within a Python program as the variable :data:`sys.path`.
    478 
    479 
    480 .. envvar:: PYTHONSTARTUP
    481 
    482    If this is the name of a readable file, the Python commands in that file are
    483    executed before the first prompt is displayed in interactive mode.  The file
    484    is executed in the same namespace where interactive commands are executed so
    485    that objects defined or imported in it can be used without qualification in
    486    the interactive session.  You can also change the prompts :data:`sys.ps1` and
    487    :data:`sys.ps2` in this file.
    488 
    489 
    490 .. envvar:: PYTHONY2K
    491 
    492    Set this to a non-empty string to cause the :mod:`time` module to require
    493    dates specified as strings to include 4-digit years, otherwise 2-digit years
    494    are converted based on rules described in the :mod:`time` module
    495    documentation.
    496 
    497 
    498 .. envvar:: PYTHONOPTIMIZE
    499 
    500    If this is set to a non-empty string it is equivalent to specifying the
    501    :option:`-O` option.  If set to an integer, it is equivalent to specifying
    502    :option:`-O` multiple times.
    503 
    504 
    505 .. envvar:: PYTHONDEBUG
    506 
    507    If this is set to a non-empty string it is equivalent to specifying the
    508    :option:`-d` option.  If set to an integer, it is equivalent to specifying
    509    :option:`-d` multiple times.
    510 
    511 
    512 .. envvar:: PYTHONINSPECT
    513 
    514    If this is set to a non-empty string it is equivalent to specifying the
    515    :option:`-i` option.
    516 
    517    This variable can also be modified by Python code using :data:`os.environ`
    518    to force inspect mode on program termination.
    519 
    520 
    521 .. envvar:: PYTHONUNBUFFERED
    522 
    523    If this is set to a non-empty string it is equivalent to specifying the
    524    :option:`-u` option.
    525 
    526 
    527 .. envvar:: PYTHONVERBOSE
    528 
    529    If this is set to a non-empty string it is equivalent to specifying the
    530    :option:`-v` option.  If set to an integer, it is equivalent to specifying
    531    :option:`-v` multiple times.
    532 
    533 
    534 .. envvar:: PYTHONCASEOK
    535 
    536    If this is set, Python ignores case in :keyword:`import` statements.  This
    537    only works on Windows, OS X, OS/2, and RiscOS.
    538 
    539 
    540 .. envvar:: PYTHONDONTWRITEBYTECODE
    541 
    542    If this is set, Python won't try to write ``.pyc`` or ``.pyo`` files on the
    543    import of source modules.  This is equivalent to specifying the :option:`-B`
    544    option.
    545 
    546    .. versionadded:: 2.6
    547 
    548 .. envvar:: PYTHONHASHSEED
    549 
    550    If this variable is set to ``random``, the effect is the same as specifying
    551    the :option:`-R` option: a random value is used to seed the hashes of str,
    552    bytes and datetime objects.
    553 
    554    If :envvar:`PYTHONHASHSEED` is set to an integer value, it is used as a
    555    fixed seed for generating the hash() of the types covered by the hash
    556    randomization.
    557 
    558    Its purpose is to allow repeatable hashing, such as for selftests for the
    559    interpreter itself, or to allow a cluster of python processes to share hash
    560    values.
    561 
    562    The integer must be a decimal number in the range [0,4294967295].
    563    Specifying the value 0 will lead to the same hash values as when hash
    564    randomization is disabled.
    565 
    566    .. versionadded:: 2.6.8
    567 
    568 
    569 .. envvar:: PYTHONIOENCODING
    570 
    571    Overrides the encoding used for stdin/stdout/stderr, in the syntax
    572    ``encodingname:errorhandler``.  The ``:errorhandler`` part is optional and
    573    has the same meaning as in :func:`str.encode`.
    574 
    575    .. versionadded:: 2.6
    576 
    577 
    578 .. envvar:: PYTHONNOUSERSITE
    579 
    580    If this is set, Python won't add the :data:`user site-packages directory
    581    <site.USER_SITE>` to :data:`sys.path`.
    582 
    583    .. versionadded:: 2.6
    584 
    585    .. seealso::
    586 
    587       :pep:`370` -- Per user site-packages directory
    588 
    589 
    590 .. envvar:: PYTHONUSERBASE
    591 
    592    Defines the :data:`user base directory <site.USER_BASE>`, which is used to
    593    compute the path of the :data:`user site-packages directory <site.USER_SITE>`
    594    and :ref:`Distutils installation paths <inst-alt-install-user>` for ``python
    595    setup.py install --user``.
    596 
    597    .. versionadded:: 2.6
    598 
    599    .. seealso::
    600 
    601       :pep:`370` -- Per user site-packages directory
    602 
    603 
    604 .. envvar:: PYTHONEXECUTABLE
    605 
    606    If this environment variable is set, ``sys.argv[0]`` will be set to its
    607    value instead of the value got through the C runtime.  Only works on
    608    Mac OS X.
    609 
    610 .. envvar:: PYTHONWARNINGS
    611 
    612    This is equivalent to the :option:`-W` option. If set to a comma
    613    separated string, it is equivalent to specifying :option:`-W` multiple
    614    times.
    615 
    616 
    617 .. envvar:: PYTHONHTTPSVERIFY
    618 
    619    If this environment variable is set specifically to ``0``, then it is
    620    equivalent to implicitly calling :func:`ssl._https_verify_certificates` with
    621    ``enable=False`` when :mod:`ssl` is first imported.
    622 
    623    Refer to the documentation of :func:`ssl._https_verify_certificates` for
    624    details.
    625 
    626    .. versionadded:: 2.7.12
    627 
    628 Debug-mode variables
    629 ~~~~~~~~~~~~~~~~~~~~
    630 
    631 Setting these variables only has an effect in a debug build of Python, that is,
    632 if Python was configured with the ``--with-pydebug`` build option.
    633 
    634 .. envvar:: PYTHONTHREADDEBUG
    635 
    636    If set, Python will print threading debug info.
    637 
    638    .. versionchanged:: 2.6
    639       Previously, this variable was called ``THREADDEBUG``.
    640 
    641 .. envvar:: PYTHONDUMPREFS
    642 
    643    If set, Python will dump objects and reference counts still alive after
    644    shutting down the interpreter.
    645 
    646 
    647 .. envvar:: PYTHONMALLOCSTATS
    648 
    649    If set, Python will print memory allocation statistics every time a new
    650    object arena is created, and on shutdown.
    651