Fix the tag.
[python/dscho.git] / Doc / using / cmdline.rst
blob8704b7fd0fdf44ae49c407aaa06b3ed5085177b4
1 .. highlightlang:: none
3 .. _using-on-general:
5 Command line and environment
6 ============================
8 The CPython interpreter scans the command line and the environment for various
9 settings.
11 .. note:: 
12    
13    Other implementations' command line schemes may differ.  See
14    :ref:`implementations` for further resources.
17 .. _using-on-cmdline:
19 Command line
20 ------------
22 When invoking Python, you may specify any of these options::
24     python [-bdEiOsStuUvxX?] [-c command | -m module-name | script | - ] [args]
26 The most common use case is, of course, a simple invocation of a script::
28     python myscript.py
31 .. _using-on-interface-options:
33 Interface options
34 ~~~~~~~~~~~~~~~~~
36 The interpreter interface resembles that of the UNIX shell, but provides some
37 additional methods of invocation:
39 * When called with standard input connected to a tty device, it prompts for
40   commands and executes them until an EOF (an end-of-file character, you can
41   produce that with *Ctrl-D* on UNIX or *Ctrl-Z, Enter* on Windows) is read.
42 * When called with a file name argument or with a file as standard input, it
43   reads and executes a script from that file.
44 * When called with a directory name argument, it reads and executes an
45   appropriately named script from that directory.
46 * When called with ``-c command``, it executes the Python statement(s) given as
47   *command*.  Here *command* may contain multiple statements separated by
48   newlines. Leading whitespace is significant in Python statements!
49 * When called with ``-m module-name``, the given module is located on the
50   Python module path and executed as a script.
52 In non-interactive mode, the entire input is parsed before it is executed.
54 An interface option terminates the list of options consumed by the interpreter,
55 all consecutive arguments will end up in :data:`sys.argv` -- note that the first
56 element, subscript zero (``sys.argv[0]``), is a string reflecting the program's
57 source.
59 .. cmdoption:: -c <command>
61    Execute the Python code in *command*.  *command* can be one ore more
62    statements separated by newlines, with significant leading whitespace as in
63    normal module code.
64    
65    If this option is given, the first element of :data:`sys.argv` will be
66    ``"-c"`` and the current directory will be added to the start of
67    :data:`sys.path` (allowing modules in that directory to be imported as top
68    level modules).
71 .. cmdoption:: -m <module-name>
73    Search :data:`sys.path` for the named module and execute its contents as
74    the :mod:`__main__` module.
75    
76    Since the argument is a *module* name, you must not give a file extension
77    (``.py``).  The ``module-name`` should be a valid Python module name, but
78    the implementation may not always enforce this (e.g. it may allow you to
79    use a name that includes a hyphen).
81    .. note::
83       This option cannot be used with builtin modules and extension modules
84       written in C, since they do not have Python module files. However, it
85       can still be used for precompiled modules, even if the original source
86       file is not available.
87    
88    If this option is given, the first element of :data:`sys.argv` will be the
89    full path to the module file. As with the :option:`-c` option, the current
90    directory will be added to the start of :data:`sys.path`.
91    
92    Many standard library modules contain code that is invoked on their execution
93    as a script.  An example is the :mod:`timeit` module::
95        python -mtimeit -s 'setup here' 'benchmarked code here'
96        python -mtimeit -h # for details
98    .. seealso:: 
99       :func:`runpy.run_module`
100          The actual implementation of this feature.
102       :pep:`338` -- Executing modules as scripts
105 .. describe:: -
107    Read commands from standard input (:data:`sys.stdin`).  If standard input is
108    a terminal, :option:`-i` is implied.
110    If this option is given, the first element of :data:`sys.argv` will be
111    ``"-"`` and the current directory will be added to the start of
112    :data:`sys.path`.
115 .. describe:: <script>
117    Execute the Python code contained in *script*, which must be a filesystem
118    path (absolute or relative) referring to either a Python file, a directory
119    containing a ``__main__.py`` file, or a zipfile containing a
120    ``__main__.py`` file.
122    If this option is given, the first element of :data:`sys.argv` will be the
123    script name as given on the command line.
125    If the script name refers directly to a Python file, the directory
126    containing that file is added to the start of :data:`sys.path`, and the
127    file is executed as the :mod:`__main__` module.
129    If the script name refers to a directory or zipfile, the script name is
130    added to the start of :data:`sys.path` and the ``__main__.py`` file in
131    that location is executed as the :mod:`__main__` module.
133    .. versionchanged:: 2.5
134       Directories and zipfiles containing a ``__main__.py`` file at the top
135       level are now considered valid Python scripts.
137 If no interface option is given, :option:`-i` is implied, ``sys.argv[0]`` is
138 an empty string (``""``) and the current directory will be added to the
139 start of :data:`sys.path`.
141    .. seealso:: 
142       :ref:`tut-invoking`
145 Generic options
146 ~~~~~~~~~~~~~~~
148 .. cmdoption:: -?
149                -h
150                --help
152    Print a short description of all command line options.
155 .. cmdoption:: -V
156                --version
158    Print the Python version number and exit.  Example output could be::
159     
160        Python 2.5.1
163 Miscellaneous options
164 ~~~~~~~~~~~~~~~~~~~~~
166 .. cmdoption:: -b
168    Issue a warning when comparing str and bytes. Issue an error when the
169    option is given twice (:option:`-bb`).
172 .. cmdoption:: -B
174    If given, Python won't try to write ``.pyc`` or ``.pyo`` files on the
175    import of source modules.  See also :envvar:`PYTHONDONTWRITEBYTECODE`.
177    .. versionadded:: 2.6
180 .. cmdoption:: -d
182    Turn on parser debugging output (for wizards only, depending on compilation
183    options).  See also :envvar:`PYTHONDEBUG`.
186 .. cmdoption:: -E
188    Ignore all :envvar:`PYTHON*` environment variables, e.g.
189    :envvar:`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set.
192 .. cmdoption:: -i
194    When a script is passed as first argument or the :option:`-c` option is used,
195    enter interactive mode after executing the script or the command, even when
196    :data:`sys.stdin` does not appear to be a terminal.  The
197    :envvar:`PYTHONSTARTUP` file is not read.
198    
199    This can be useful to inspect global variables or a stack trace when a script
200    raises an exception.  See also :envvar:`PYTHONINSPECT`.
203 .. cmdoption:: -O
205    Turn on basic optimizations.  This changes the filename extension for
206    compiled (:term:`bytecode`) files from ``.pyc`` to ``.pyo``.  See also
207    :envvar:`PYTHONOPTIMIZE`.
210 .. cmdoption:: -OO
212    Discard docstrings in addition to the :option:`-O` optimizations.
215 .. cmdoption:: -s
217    Don't add user site directory to sys.path
219    .. versionadded:: 2.6
221    .. seealso::
223       :pep:`370` -- Per user site-packages directory
226 .. cmdoption:: -S
228    Disable the import of the module :mod:`site` and the site-dependent
229    manipulations of :data:`sys.path` that it entails.
232 .. cmdoption:: -t
234    Issue a warning when a source file mixes tabs and spaces for indentation in a
235    way that makes it depend on the worth of a tab expressed in spaces.  Issue an
236    error when the option is given twice (:option:`-tt`).
239 .. cmdoption:: -u
240    
241    Force stdin, stdout and stderr to be totally unbuffered.  On systems where it
242    matters, also put stdin, stdout and stderr in binary mode.
243    
244    Note that there is internal buffering in :meth:`file.readlines` and
245    :ref:`bltin-file-objects` (``for line in sys.stdin``) which is not influenced
246    by this option.  To work around this, you will want to use
247    :meth:`file.readline` inside a ``while 1:`` loop.
249    See also :envvar:`PYTHONUNBUFFERED`.
252 .. XXX should the -U option be documented?
254 .. cmdoption:: -v
255    
256    Print a message each time a module is initialized, showing the place
257    (filename or built-in module) from which it is loaded.  When given twice
258    (:option:`-vv`), print a message for each file that is checked for when
259    searching for a module.  Also provides information on module cleanup at exit.
260    See also :envvar:`PYTHONVERBOSE`.
263 .. cmdoption:: -W arg
264    
265    Warning control.  Python's warning machinery by default prints warning
266    messages to :data:`sys.stderr`.  A typical warning message has the following
267    form::
269        file:line: category: message
270        
271    By default, each warning is printed once for each source line where it
272    occurs.  This option controls how often warnings are printed.
274    Multiple :option:`-W` options may be given; when a warning matches more than
275    one option, the action for the last matching option is performed.  Invalid
276    :option:`-W` options are ignored (though, a warning message is printed about
277    invalid options when the first warning is issued).
278    
279    Warnings can also be controlled from within a Python program using the
280    :mod:`warnings` module.
282    The simplest form of argument is one of the following action strings (or a
283    unique abbreviation):
284     
285    ``ignore``
286       Ignore all warnings.
287    ``default``
288       Explicitly request the default behavior (printing each warning once per
289       source line).
290    ``all``
291       Print a warning each time it occurs (this may generate many messages if a
292       warning is triggered repeatedly for the same source line, such as inside a
293       loop).
294    ``module``
295       Print each warning only only the first time it occurs in each module.
296    ``once``
297       Print each warning only the first time it occurs in the program.
298    ``error``
299       Raise an exception instead of printing a warning message.
300       
301    The full form of argument is:: 
302    
303        action:message:category:module:line
305    Here, *action* is as explained above but only applies to messages that match
306    the remaining fields.  Empty fields match all values; trailing empty fields
307    may be omitted.  The *message* field matches the start of the warning message
308    printed; this match is case-insensitive.  The *category* field matches the
309    warning category.  This must be a class name; the match test whether the
310    actual warning category of the message is a subclass of the specified warning
311    category.  The full class name must be given.  The *module* field matches the
312    (fully-qualified) module name; this match is case-sensitive.  The *line*
313    field matches the line number, where zero matches all line numbers and is
314    thus equivalent to an omitted line number.
316    .. seealso::
317       :mod:`warnings` -- the warnings module
319       :pep:`230` -- Warning framework
322 .. cmdoption:: -x
323    
324    Skip the first line of the source, allowing use of non-Unix forms of
325    ``#!cmd``.  This is intended for a DOS specific hack only.
326    
327    .. warning:: The line numbers in error messages will be off by one!
329 .. _using-on-envvars:
331 Environment variables
332 ---------------------
334 These environment variables influence Python's behavior.
336 .. envvar:: PYTHONHOME
337    
338    Change the location of the standard Python libraries.  By default, the
339    libraries are searched in :file:`{prefix}/lib/python{version}` and
340    :file:`{exec_prefix}/lib/python{version}`, where :file:`{prefix}` and
341    :file:`{exec_prefix}` are installation-dependent directories, both defaulting
342    to :file:`/usr/local`.
343    
344    When :envvar:`PYTHONHOME` is set to a single directory, its value replaces
345    both :file:`{prefix}` and :file:`{exec_prefix}`.  To specify different values
346    for these, set :envvar:`PYTHONHOME` to :file:`{prefix}:{exec_prefix}`.
349 .. envvar:: PYTHONPATH
351    Augment the default search path for module files.  The format is the same as
352    the shell's :envvar:`PATH`: one or more directory pathnames separated by
353    :data:`os.pathsep` (e.g. colons on Unix or semicolons on Windows).
354    Non-existent directories are silently ignored.
356    In addition to normal directories, individual :envvar:`PYTHONPATH` entries
357    may refer to zipfiles containing pure Python modules (in either source or
358    compiled form). Extension modules cannot be imported from zipfiles.
359    
360    The default search path is installation dependent, but generally begins with
361    :file:`{prefix}/lib/python{version}`` (see :envvar:`PYTHONHOME` above).  It
362    is *always* appended to :envvar:`PYTHONPATH`.
363    
364    An additional directory will be inserted in the search path in front of
365    :envvar:`PYTHONPATH` as described above under
366    :ref:`using-on-interface-options`. The search path can be manipulated from
367    within a Python program as the variable :data:`sys.path`.
370 .. envvar:: PYTHONSTARTUP
371    
372    If this is the name of a readable file, the Python commands in that file are
373    executed before the first prompt is displayed in interactive mode.  The file
374    is executed in the same namespace where interactive commands are executed so
375    that objects defined or imported in it can be used without qualification in
376    the interactive session.  You can also change the prompts :data:`sys.ps1` and
377    :data:`sys.ps2` in this file.
380 .. envvar:: PYTHONY2K
381    
382    Set this to a non-empty string to cause the :mod:`time` module to require
383    dates specified as strings to include 4-digit years, otherwise 2-digit years
384    are converted based on rules described in the :mod:`time` module
385    documentation.
388 .. envvar:: PYTHONOPTIMIZE
389    
390    If this is set to a non-empty string it is equivalent to specifying the
391    :option:`-O` option.  If set to an integer, it is equivalent to specifying
392    :option:`-O` multiple times.
395 .. envvar:: PYTHONDEBUG
396    
397    If this is set to a non-empty string it is equivalent to specifying the
398    :option:`-d` option.  If set to an integer, it is equivalent to specifying
399    :option:`-d` multiple times.
402 .. envvar:: PYTHONINSPECT
403    
404    If this is set to a non-empty string it is equivalent to specifying the
405    :option:`-i` option.
407    This variable can also be modified by Python code using :data:`os.environ`
408    to force inspect mode on program termination.
411 .. envvar:: PYTHONUNBUFFERED
412    
413    If this is set to a non-empty string it is equivalent to specifying the
414    :option:`-u` option.
417 .. envvar:: PYTHONVERBOSE
418    
419    If this is set to a non-empty string it is equivalent to specifying the
420    :option:`-v` option.  If set to an integer, it is equivalent to specifying
421    :option:`-v` multiple times.
424 .. envvar:: PYTHONCASEOK
425    
426    If this is set, Python ignores case in :keyword:`import` statements.  This
427    only works on Windows.
430 .. envvar:: PYTHONDONTWRITEBYTECODE
432    If this is set, Python won't try to write ``.pyc`` or ``.pyo`` files on the
433    import of source modules.
435    .. versionadded:: 2.6
438 .. envvar:: PYTHONNOUSERSITE
440    If this is set, Python won't add the user site directory to sys.path
442    .. seealso::
444       :pep:`370` -- Per user site-packages directory
447 .. envvar:: PYTHONUSERBASE
449    Sets the base directory for the user site directory
451    .. seealso::
453       :pep:`370` -- Per user site-packages directory
456 .. envvar:: PYTHONEXECUTABLE
458    If this environment variable is set, ``sys.argv[0]`` will be set to its
459    value instead of the value got through the C runtime.  Only works on
460    MacOS X.
463 Debug-mode variables
464 ~~~~~~~~~~~~~~~~~~~~
466 Setting these variables only has an effect in a debug build of Python, that is,
467 if Python was configured with the :option:`--with-pydebug` build option.
469 .. envvar:: PYTHONTHREADDEBUG
471    If set, Python will print threading debug info.
473    .. versionchanged:: 2.6
474       Previously, this variable was called ``THREADDEBUG``.
476 .. envvar:: PYTHONDUMPREFS
478    If set, Python will dump objects and reference counts still alive after
479    shutting down the interpreter.
482 .. envvar:: PYTHONMALLOCSTATS
484    If set, Python will print memory allocation statistics every time a new
485    object arena is created, and on shutdown.