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
8Command line and environment
9============================
10
11The CPython interpreter scans the command line and the environment for various
12settings.
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
22Command line
23------------
24
25When invoking Python, you may specify any of these options::
26
27    python [-bBdEiOQsRStuUvVWxX3?] [-c command | -m module-name | script | - ] [args]
28
29The 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
36Interface options
37~~~~~~~~~~~~~~~~~
38
39The interpreter interface resembles that of the UNIX shell, but provides some
40additional 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
55In non-interactive mode, the entire input is parsed before it is executed.
56
57An interface option terminates the list of options consumed by the interpreter,
58all consecutive arguments will end up in :data:`sys.argv` -- note that the first
59element, subscript zero (``sys.argv[0]``), is a string reflecting the program's
60source.
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
160If no interface option is given, :option:`-i` is implied, ``sys.argv[0]`` is
161an empty string (``""``) and the current directory will be added to the
162start of :data:`sys.path`.
163
164.. seealso::  :ref:`tut-invoking`
165
166
167Generic 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
191Miscellaneous options
192~~~~~~~~~~~~~~~~~~~~~
193
194.. cmdoption:: -b
195
196   Issue a warning when comparing :class:`unicode` with :class:`bytearray`.
197   Issue an error when the option is given twice (:option:`!-bb`).
198
199   Note that, unlike the corresponding Python 3.x flag, this will **not** emit
200   warnings for comparisons between :class:`str` and :class:`unicode`.
201   Instead, the ``str`` instance will be implicitly decoded to ``unicode`` and
202   Unicode comparison used.
203
204   .. versionadded:: 2.6
205
206
207.. cmdoption:: -B
208
209   If given, Python won't try to write ``.pyc`` or ``.pyo`` files on the
210   import of source modules.  See also :envvar:`PYTHONDONTWRITEBYTECODE`.
211
212   .. versionadded:: 2.6
213
214
215.. cmdoption:: -d
216
217   Turn on parser debugging output (for wizards only, depending on compilation
218   options).  See also :envvar:`PYTHONDEBUG`.
219
220
221.. cmdoption:: -E
222
223   Ignore all :envvar:`PYTHON*` environment variables, e.g.
224   :envvar:`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set.
225
226   .. versionadded:: 2.2
227
228
229.. cmdoption:: -i
230
231   When a script is passed as first argument or the :option:`-c` option is used,
232   enter interactive mode after executing the script or the command, even when
233   :data:`sys.stdin` does not appear to be a terminal.  The
234   :envvar:`PYTHONSTARTUP` file is not read.
235
236   This can be useful to inspect global variables or a stack trace when a script
237   raises an exception.  See also :envvar:`PYTHONINSPECT`.
238
239
240.. _using-on-optimizations:
241.. cmdoption:: -O
242
243   Turn on basic optimizations.  This changes the filename extension for
244   compiled (:term:`bytecode`) files from ``.pyc`` to ``.pyo``.  See also
245   :envvar:`PYTHONOPTIMIZE`.
246
247
248.. cmdoption:: -OO
249
250   Discard docstrings in addition to the :option:`-O` optimizations.
251
252
253.. cmdoption:: -Q <arg>
254
255   Division control. The argument must be one of the following:
256
257   ``old``
258     division of int/int and long/long return an int or long (*default*)
259   ``new``
260     new division semantics, i.e. division of int/int and long/long returns a
261     float
262   ``warn``
263     old division semantics with a warning for int/int and long/long
264   ``warnall``
265     old division semantics with a warning for all uses of the division operator
266
267   .. seealso::
268      :file:`Tools/scripts/fixdiv.py`
269         for a use of ``warnall``
270
271      :pep:`238` -- Changing the division operator
272
273
274.. cmdoption:: -R
275
276   Turn on hash randomization, so that the :meth:`__hash__` values of str,
277   bytes and datetime objects are "salted" with an unpredictable random value.
278   Although they remain constant within an individual Python process, they are
279   not predictable between repeated invocations of Python.
280
281   This is intended to provide protection against a denial-of-service caused by
282   carefully-chosen inputs that exploit the worst case performance of a dict
283   construction, O(n^2) complexity.  See
284   http://www.ocert.org/advisories/ocert-2011-003.html for details.
285
286   Changing hash values affects the order in which keys are retrieved from a
287   dict.  Although Python has never made guarantees about this ordering (and it
288   typically varies between 32-bit and 64-bit builds), enough real-world code
289   implicitly relies on this non-guaranteed behavior that the randomization is
290   disabled by default.
291
292   See also :envvar:`PYTHONHASHSEED`.
293
294   .. versionadded:: 2.6.8
295
296
297.. cmdoption:: -s
298
299   Don't add the :data:`user site-packages directory <site.USER_SITE>` to
300   :data:`sys.path`.
301
302   .. versionadded:: 2.6
303
304   .. seealso::
305
306      :pep:`370` -- Per user site-packages directory
307
308
309.. cmdoption:: -S
310
311   Disable the import of the module :mod:`site` and the site-dependent
312   manipulations of :data:`sys.path` that it entails.
313
314
315.. cmdoption:: -t
316
317   Issue a warning when a source file mixes tabs and spaces for indentation in a
318   way that makes it depend on the worth of a tab expressed in spaces.  Issue an
319   error when the option is given twice (:option:`!-tt`).
320
321
322.. cmdoption:: -u
323
324   Force stdin, stdout and stderr to be totally unbuffered.  On systems where it
325   matters, also put stdin, stdout and stderr in binary mode.
326
327   Note that there is internal buffering in :meth:`file.readlines` and
328   :ref:`bltin-file-objects` (``for line in sys.stdin``) which is not influenced
329   by this option.  To work around this, you will want to use
330   :meth:`file.readline` inside a ``while 1:`` loop.
331
332   See also :envvar:`PYTHONUNBUFFERED`.
333
334
335.. cmdoption:: -v
336
337   Print a message each time a module is initialized, showing the place
338   (filename or built-in module) from which it is loaded.  When given twice
339   (:option:`!-vv`), print a message for each file that is checked for when
340   searching for a module.  Also provides information on module cleanup at exit.
341   See also :envvar:`PYTHONVERBOSE`.
342
343
344.. cmdoption:: -W arg
345
346   Warning control.  Python's warning machinery by default prints warning
347   messages to :data:`sys.stderr`.  A typical warning message has the following
348   form::
349
350       file:line: category: message
351
352   By default, each warning is printed once for each source line where it
353   occurs.  This option controls how often warnings are printed.
354
355   Multiple :option:`-W` options may be given; when a warning matches more than
356   one option, the action for the last matching option is performed.  Invalid
357   :option:`-W` options are ignored (though, a warning message is printed about
358   invalid options when the first warning is issued).
359
360   Starting from Python 2.7, :exc:`DeprecationWarning` and its descendants
361   are ignored by default.  The :option:`!-Wd` option can be used to re-enable
362   them.
363
364   Warnings can also be controlled from within a Python program using the
365   :mod:`warnings` module.
366
367   The simplest form of argument is one of the following action strings (or a
368   unique abbreviation) by themselves:
369
370   ``ignore``
371      Ignore all warnings.
372   ``default``
373      Explicitly request the default behavior (printing each warning once per
374      source line).
375   ``all``
376      Print a warning each time it occurs (this may generate many messages if a
377      warning is triggered repeatedly for the same source line, such as inside a
378      loop).
379   ``module``
380      Print each warning only the first time it occurs in each module.
381   ``once``
382      Print each warning only the first time it occurs in the program.
383   ``error``
384      Raise an exception instead of printing a warning message.
385
386   The full form of argument is::
387
388       action:message:category:module:line
389
390   Here, *action* is as explained above but only applies to messages that match
391   the remaining fields.  Empty fields match all values; trailing empty fields
392   may be omitted.  The *message* field matches the start of the warning message
393   printed; this match is case-insensitive.  The *category* field matches the
394   warning category.  This must be a class name; the match tests whether the
395   actual warning category of the message is a subclass of the specified warning
396   category.  The full class name must be given.  The *module* field matches the
397   (fully-qualified) module name; this match is case-sensitive.  The *line*
398   field matches the line number, where zero matches all line numbers and is
399   thus equivalent to an omitted line number.
400
401   .. seealso::
402      :mod:`warnings` -- the warnings module
403
404      :pep:`230` -- Warning framework
405
406      :envvar:`PYTHONWARNINGS`
407
408
409.. cmdoption:: -x
410
411   Skip the first line of the source, allowing use of non-Unix forms of
412   ``#!cmd``.  This is intended for a DOS specific hack only.
413
414.. cmdoption:: -3
415
416   Warn about Python 3.x possible incompatibilities by emitting a
417   :exc:`DeprecationWarning` for features that are removed or significantly
418   changed in Python 3 and can't be detected using static code analysis.
419
420   .. versionadded:: 2.6
421
422   See :doc:`/howto/pyporting` for more details.
423
424Options you shouldn't use
425~~~~~~~~~~~~~~~~~~~~~~~~~
426
427.. cmdoption:: -J
428
429   Reserved for use by Jython_.
430
431.. _Jython: http://www.jython.org/
432
433.. cmdoption:: -U
434
435   Turns all string literals into unicodes globally.  Do not be tempted to use
436   this option as it will probably break your world.  It also produces
437   ``.pyc`` files with a different magic number than normal.  Instead, you can
438   enable unicode literals on a per-module basis by using::
439
440        from __future__ import unicode_literals
441
442   at the top of the file.  See :mod:`__future__` for details.
443
444.. cmdoption:: -X
445
446    Reserved for alternative implementations of Python to use for their own
447    purposes.
448
449.. _using-on-envvars:
450
451Environment variables
452---------------------
453
454These environment variables influence Python's behavior, they are processed
455before the command-line switches other than -E.  It is customary that
456command-line switches override environmental variables where there is a
457conflict.
458
459.. envvar:: PYTHONHOME
460
461   Change the location of the standard Python libraries.  By default, the
462   libraries are searched in :file:`{prefix}/lib/python{version}` and
463   :file:`{exec_prefix}/lib/python{version}`, where :file:`{prefix}` and
464   :file:`{exec_prefix}` are installation-dependent directories, both defaulting
465   to :file:`/usr/local`.
466
467   When :envvar:`PYTHONHOME` is set to a single directory, its value replaces
468   both :file:`{prefix}` and :file:`{exec_prefix}`.  To specify different values
469   for these, set :envvar:`PYTHONHOME` to :file:`{prefix}:{exec_prefix}`.
470
471
472.. envvar:: PYTHONPATH
473
474   Augment the default search path for module files.  The format is the same as
475   the shell's :envvar:`PATH`: one or more directory pathnames separated by
476   :data:`os.pathsep` (e.g. colons on Unix or semicolons on Windows).
477   Non-existent directories are silently ignored.
478
479   In addition to normal directories, individual :envvar:`PYTHONPATH` entries
480   may refer to zipfiles containing pure Python modules (in either source or
481   compiled form). Extension modules cannot be imported from zipfiles.
482
483   The default search path is installation dependent, but generally begins with
484   :file:`{prefix}/lib/python{version}` (see :envvar:`PYTHONHOME` above).  It
485   is *always* appended to :envvar:`PYTHONPATH`.
486
487   An additional directory will be inserted in the search path in front of
488   :envvar:`PYTHONPATH` as described above under
489   :ref:`using-on-interface-options`. The search path can be manipulated from
490   within a Python program as the variable :data:`sys.path`.
491
492
493.. envvar:: PYTHONSTARTUP
494
495   If this is the name of a readable file, the Python commands in that file are
496   executed before the first prompt is displayed in interactive mode.  The file
497   is executed in the same namespace where interactive commands are executed so
498   that objects defined or imported in it can be used without qualification in
499   the interactive session.  You can also change the prompts :data:`sys.ps1` and
500   :data:`sys.ps2` in this file.
501
502
503.. envvar:: PYTHONY2K
504
505   Set this to a non-empty string to cause the :mod:`time` module to require
506   dates specified as strings to include 4-digit years, otherwise 2-digit years
507   are converted based on rules described in the :mod:`time` module
508   documentation.
509
510
511.. envvar:: PYTHONOPTIMIZE
512
513   If this is set to a non-empty string it is equivalent to specifying the
514   :option:`-O` option.  If set to an integer, it is equivalent to specifying
515   :option:`-O` multiple times.
516
517
518.. envvar:: PYTHONDEBUG
519
520   If this is set to a non-empty string it is equivalent to specifying the
521   :option:`-d` option.  If set to an integer, it is equivalent to specifying
522   :option:`-d` multiple times.
523
524
525.. envvar:: PYTHONINSPECT
526
527   If this is set to a non-empty string it is equivalent to specifying the
528   :option:`-i` option.
529
530   This variable can also be modified by Python code using :data:`os.environ`
531   to force inspect mode on program termination.
532
533
534.. envvar:: PYTHONUNBUFFERED
535
536   If this is set to a non-empty string it is equivalent to specifying the
537   :option:`-u` option.
538
539
540.. envvar:: PYTHONVERBOSE
541
542   If this is set to a non-empty string it is equivalent to specifying the
543   :option:`-v` option.  If set to an integer, it is equivalent to specifying
544   :option:`-v` multiple times.
545
546
547.. envvar:: PYTHONCASEOK
548
549   If this is set, Python ignores case in :keyword:`import` statements.  This
550   only works on Windows, OS X, OS/2, and RiscOS.
551
552
553.. envvar:: PYTHONDONTWRITEBYTECODE
554
555   If this is set, Python won't try to write ``.pyc`` or ``.pyo`` files on the
556   import of source modules.  This is equivalent to specifying the :option:`-B`
557   option.
558
559   .. versionadded:: 2.6
560
561.. envvar:: PYTHONHASHSEED
562
563   If this variable is set to ``random``, the effect is the same as specifying
564   the :option:`-R` option: a random value is used to seed the hashes of str,
565   bytes and datetime objects.
566
567   If :envvar:`PYTHONHASHSEED` is set to an integer value, it is used as a
568   fixed seed for generating the hash() of the types covered by the hash
569   randomization.
570
571   Its purpose is to allow repeatable hashing, such as for selftests for the
572   interpreter itself, or to allow a cluster of python processes to share hash
573   values.
574
575   The integer must be a decimal number in the range [0,4294967295].
576   Specifying the value 0 will lead to the same hash values as when hash
577   randomization is disabled.
578
579   .. versionadded:: 2.6.8
580
581
582.. envvar:: PYTHONIOENCODING
583
584   Overrides the encoding used for stdin/stdout/stderr, in the syntax
585   ``encodingname:errorhandler``.  The ``:errorhandler`` part is optional and
586   has the same meaning as in :func:`str.encode`.
587
588   .. versionadded:: 2.6
589
590
591.. envvar:: PYTHONNOUSERSITE
592
593   If this is set, Python won't add the :data:`user site-packages directory
594   <site.USER_SITE>` to :data:`sys.path`.
595
596   .. versionadded:: 2.6
597
598   .. seealso::
599
600      :pep:`370` -- Per user site-packages directory
601
602
603.. envvar:: PYTHONUSERBASE
604
605   Defines the :data:`user base directory <site.USER_BASE>`, which is used to
606   compute the path of the :data:`user site-packages directory <site.USER_SITE>`
607   and :ref:`Distutils installation paths <inst-alt-install-user>` for ``python
608   setup.py install --user``.
609
610   .. versionadded:: 2.6
611
612   .. seealso::
613
614      :pep:`370` -- Per user site-packages directory
615
616
617.. envvar:: PYTHONEXECUTABLE
618
619   If this environment variable is set, ``sys.argv[0]`` will be set to its
620   value instead of the value got through the C runtime.  Only works on
621   Mac OS X.
622
623.. envvar:: PYTHONWARNINGS
624
625   This is equivalent to the :option:`-W` option. If set to a comma
626   separated string, it is equivalent to specifying :option:`-W` multiple
627   times.
628
629
630.. envvar:: PYTHONHTTPSVERIFY
631
632   If this environment variable is set specifically to ``0``, then it is
633   equivalent to implicitly calling :func:`ssl._https_verify_certificates` with
634   ``enable=False`` when :mod:`ssl` is first imported.
635
636   Refer to the documentation of :func:`ssl._https_verify_certificates` for
637   details.
638
639   .. versionadded:: 2.7.12
640
641Debug-mode variables
642~~~~~~~~~~~~~~~~~~~~
643
644Setting these variables only has an effect in a debug build of Python, that is,
645if Python was configured with the ``--with-pydebug`` build option.
646
647.. envvar:: PYTHONTHREADDEBUG
648
649   If set, Python will print threading debug info.
650
651   .. versionchanged:: 2.6
652      Previously, this variable was called ``THREADDEBUG``.
653
654.. envvar:: PYTHONDUMPREFS
655
656   If set, Python will dump objects and reference counts still alive after
657   shutting down the interpreter.
658
659
660.. envvar:: PYTHONMALLOCSTATS
661
662   If set, Python will print memory allocation statistics every time a new
663   object arena is created, and on shutdown.
664
665.. envvar:: PYTHONSHOWALLOCCOUNT
666
667   If set and Python was compiled with ``COUNT_ALLOCS`` defined, Python will
668   dump allocations counts into stderr on shutdown.
669
670   .. versionadded:: 2.7.15
671
672.. envvar:: PYTHONSHOWREFCOUNT
673
674   If set, Python will print the total reference count when the program
675   finishes or after each statement in the interactive interpreter.
676
677   .. versionadded:: 2.7.15
678