blob: 5cb90717705de7f0450fecc3d3fce91866dd4064 [file] [log] [blame]
Berker Peksag8b1cbd22014-12-10 01:47:02 +02001.. highlightlang:: sh
Georg Brandl3c8ce772007-11-01 20:58:08 +00002
Philip Jenvey0805ca32010-04-07 04:04:10 +00003.. ATTENTION: You probably should update Misc/python.man, too, if you modify
Berker Peksag8b1cbd22014-12-10 01:47:02 +02004 this file.
Philip Jenvey0805ca32010-04-07 04:04:10 +00005
Christian Heimesd8654cf2007-12-02 15:22:16 +00006.. _using-on-general:
7
Georg Brandl3c8ce772007-11-01 20:58:08 +00008Command line and environment
9============================
10
11The CPython interpreter scans the command line and the environment for various
12settings.
13
Georg Brandl495f7b52009-10-27 15:28:25 +000014.. impl-detail::
Georg Brandl48310cd2009-01-03 21:18:54 +000015
Christian Heimescbf3b5c2007-12-03 21:02:03 +000016 Other implementations' command line schemes may differ. See
Georg Brandl3c8ce772007-11-01 20:58:08 +000017 :ref:`implementations` for further resources.
18
19
Christian Heimesd8654cf2007-12-02 15:22:16 +000020.. _using-on-cmdline:
21
Georg Brandl3c8ce772007-11-01 20:58:08 +000022Command line
23------------
24
25When invoking Python, you may specify any of these options::
26
Christian Heimesad73a9c2013-08-10 16:36:18 +020027 python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]
Georg Brandl3c8ce772007-11-01 20:58:08 +000028
29The most common use case is, of course, a simple invocation of a script::
30
31 python myscript.py
32
33
Christian Heimes81ee3ef2008-05-04 22:42:01 +000034.. _using-on-interface-options:
35
Georg Brandl3c8ce772007-11-01 20:58:08 +000036Interface options
37~~~~~~~~~~~~~~~~~
38
Christian Heimes81ee3ef2008-05-04 22:42:01 +000039The interpreter interface resembles that of the UNIX shell, but provides some
40additional methods of invocation:
Georg Brandl3c8ce772007-11-01 20:58:08 +000041
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
Serhiy Storchaka0424eaf2015-09-12 17:45:25 +030044 produce that with :kbd:`Ctrl-D` on UNIX or :kbd:`Ctrl-Z, Enter` on Windows) is read.
Georg Brandl3c8ce772007-11-01 20:58:08 +000045* When called with a file name argument or with a file as standard input, it
46 reads and executes a script from that file.
Christian Heimes81ee3ef2008-05-04 22:42:01 +000047* When called with a directory name argument, it reads and executes an
48 appropriately named script from that directory.
Georg Brandl3c8ce772007-11-01 20:58:08 +000049* 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!
Christian Heimes81ee3ef2008-05-04 22:42:01 +000052* When called with ``-m module-name``, the given module is located on the
Georg Brandl3c8ce772007-11-01 20:58:08 +000053 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
Georg Brandl44afa5e2010-07-06 22:58:50 +000064 Execute the Python code in *command*. *command* can be one or more
Georg Brandl3c8ce772007-11-01 20:58:08 +000065 statements separated by newlines, with significant leading whitespace as in
66 normal module code.
Georg Brandl48310cd2009-01-03 21:18:54 +000067
Georg Brandl3c8ce772007-11-01 20:58:08 +000068 If this option is given, the first element of :data:`sys.argv` will be
Christian Heimes81ee3ef2008-05-04 22:42:01 +000069 ``"-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).
Georg Brandl3c8ce772007-11-01 20:58:08 +000072
73
74.. cmdoption:: -m <module-name>
75
Christian Heimes81ee3ef2008-05-04 22:42:01 +000076 Search :data:`sys.path` for the named module and execute its contents as
77 the :mod:`__main__` module.
Georg Brandl48310cd2009-01-03 21:18:54 +000078
Georg Brandl3c8ce772007-11-01 20:58:08 +000079 Since the argument is a *module* name, you must not give a file extension
Martin Panter7dda4212015-12-10 06:47:06 +000080 (``.py``). The module name should be a valid absolute Python module name, but
Christian Heimes81ee3ef2008-05-04 22:42:01 +000081 the implementation may not always enforce this (e.g. it may allow you to
82 use a name that includes a hyphen).
Georg Brandl3c8ce772007-11-01 20:58:08 +000083
R David Murray5147e002014-02-02 12:19:57 -050084 Package names (including namespace packages) are also permitted. When a
85 package name is supplied instead
Nick Coghlan3f48ae32009-02-08 01:58:26 +000086 of a normal module, the interpreter will execute ``<pkg>.__main__`` as
87 the main module. This behaviour is deliberately similar to the handling
88 of directories and zipfiles that are passed to the interpreter as the
89 script argument.
90
Georg Brandl3c8ce772007-11-01 20:58:08 +000091 .. note::
92
Georg Brandl22b34312009-07-26 14:54:51 +000093 This option cannot be used with built-in modules and extension modules
Christian Heimes81ee3ef2008-05-04 22:42:01 +000094 written in C, since they do not have Python module files. However, it
95 can still be used for precompiled modules, even if the original source
96 file is not available.
Georg Brandl48310cd2009-01-03 21:18:54 +000097
Georg Brandl3c8ce772007-11-01 20:58:08 +000098 If this option is given, the first element of :data:`sys.argv` will be the
Nick Coghland26c18a2010-08-17 13:06:11 +000099 full path to the module file (while the module file is being located, the
100 first element will be set to ``"-m"``). As with the :option:`-c` option,
101 the current directory will be added to the start of :data:`sys.path`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000102
Georg Brandl3c8ce772007-11-01 20:58:08 +0000103 Many standard library modules contain code that is invoked on their execution
104 as a script. An example is the :mod:`timeit` module::
105
106 python -mtimeit -s 'setup here' 'benchmarked code here'
107 python -mtimeit -h # for details
108
Georg Brandl48310cd2009-01-03 21:18:54 +0000109 .. seealso::
Georg Brandl3c8ce772007-11-01 20:58:08 +0000110 :func:`runpy.run_module`
Nick Coghlan3f48ae32009-02-08 01:58:26 +0000111 Equivalent functionality directly available to Python code
Georg Brandl3c8ce772007-11-01 20:58:08 +0000112
113 :pep:`338` -- Executing modules as scripts
114
115
Nick Coghlan3f48ae32009-02-08 01:58:26 +0000116 .. versionchanged:: 3.1
117 Supply the package name to run a ``__main__`` submodule.
118
R David Murray5147e002014-02-02 12:19:57 -0500119 .. versionchanged:: 3.4
120 namespace packages are also supported
121
Georg Brandl67b21b72010-08-17 15:07:14 +0000122
Georg Brandl3c8ce772007-11-01 20:58:08 +0000123.. describe:: -
124
125 Read commands from standard input (:data:`sys.stdin`). If standard input is
126 a terminal, :option:`-i` is implied.
127
128 If this option is given, the first element of :data:`sys.argv` will be
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000129 ``"-"`` and the current directory will be added to the start of
130 :data:`sys.path`.
131
132
133.. describe:: <script>
134
135 Execute the Python code contained in *script*, which must be a filesystem
136 path (absolute or relative) referring to either a Python file, a directory
137 containing a ``__main__.py`` file, or a zipfile containing a
138 ``__main__.py`` file.
139
140 If this option is given, the first element of :data:`sys.argv` will be the
141 script name as given on the command line.
142
143 If the script name refers directly to a Python file, the directory
144 containing that file is added to the start of :data:`sys.path`, and the
145 file is executed as the :mod:`__main__` module.
146
147 If the script name refers to a directory or zipfile, the script name is
148 added to the start of :data:`sys.path` and the ``__main__.py`` file in
149 that location is executed as the :mod:`__main__` module.
150
Berker Peksag8b1cbd22014-12-10 01:47:02 +0200151 .. seealso::
152 :func:`runpy.run_path`
153 Equivalent functionality directly available to Python code
154
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000155
156If no interface option is given, :option:`-i` is implied, ``sys.argv[0]`` is
157an empty string (``""``) and the current directory will be added to the
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200158start of :data:`sys.path`. Also, tab-completion and history editing is
159automatically enabled, if available on your platform (see
160:ref:`rlcompleter-config`).
161
Berker Peksag8b1cbd22014-12-10 01:47:02 +0200162.. seealso:: :ref:`tut-invoking`
163
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200164.. versionchanged:: 3.4
165 Automatic enabling of tab-completion and history editing.
Georg Brandl3c8ce772007-11-01 20:58:08 +0000166
Georg Brandl3c8ce772007-11-01 20:58:08 +0000167
Georg Brandl3c8ce772007-11-01 20:58:08 +0000168Generic options
169~~~~~~~~~~~~~~~
170
171.. cmdoption:: -?
172 -h
173 --help
174
175 Print a short description of all command line options.
176
177
178.. cmdoption:: -V
179 --version
180
181 Print the Python version number and exit. Example output could be::
Georg Brandl48310cd2009-01-03 21:18:54 +0000182
INADA Naoki0e175a62016-11-21 20:57:14 +0900183 Python 3.6.0b2+
184
185 When given twice, print more information about the build, like::
186
187 Python 3.6.0b2+ (3.6:84a3c5003510+, Oct 26 2016, 02:33:55)
188 [GCC 6.2.0 20161005]
Georg Brandl3c8ce772007-11-01 20:58:08 +0000189
INADA Naokif5763432016-11-24 17:20:40 +0900190 .. versionadded:: 3.6
191 The ``-VV`` option.
Georg Brandl3c8ce772007-11-01 20:58:08 +0000192
Christian Heimesad73a9c2013-08-10 16:36:18 +0200193.. _using-on-misc-options:
194
Georg Brandl3c8ce772007-11-01 20:58:08 +0000195Miscellaneous options
196~~~~~~~~~~~~~~~~~~~~~
197
Christian Heimes226679a2007-12-07 11:52:55 +0000198.. cmdoption:: -b
199
Serhiy Storchaka1dd49822015-03-20 16:54:57 +0200200 Issue a warning when comparing :class:`bytes` or :class:`bytearray` with
201 :class:`str` or :class:`bytes` with :class:`int`. Issue an error when the
Martin Panter5c679332016-10-30 04:20:17 +0000202 option is given twice (:option:`!-bb`).
Christian Heimes226679a2007-12-07 11:52:55 +0000203
Georg Brandl8c16cb92016-02-25 20:17:45 +0100204 .. versionchanged:: 3.5
Serhiy Storchaka1dd49822015-03-20 16:54:57 +0200205 Affects comparisons of :class:`bytes` with :class:`int`.
Christian Heimes226679a2007-12-07 11:52:55 +0000206
Christian Heimes790c8232008-01-07 21:14:23 +0000207.. cmdoption:: -B
208
Larry Hastings770ce202015-04-19 13:50:12 -0700209 If given, Python won't try to write ``.pyc`` files on the
Christian Heimes790c8232008-01-07 21:14:23 +0000210 import of source modules. See also :envvar:`PYTHONDONTWRITEBYTECODE`.
211
Christian Heimes790c8232008-01-07 21:14:23 +0000212
Benjamin Peterson42aa93b2017-12-09 10:26:52 -0800213.. cmdoption:: --check-hash-based-pycs default|always|never
214
215 Control the validation behavior of hash-based ``.pyc`` files. See
216 :ref:`pyc-invalidation`. When set to ``default``, checked and unchecked
217 hash-based bytecode cache files are validated according to their default
218 semantics. When set to ``always``, all hash-based ``.pyc`` files, whether
219 checked or unchecked, are validated against their corresponding source
220 file. When set to ``never``, hash-based ``.pyc`` files are not validated
221 against their corresponding source files.
222
223 The semantics of timestamp-based ``.pyc`` files are unaffected by this
224 option.
225
226
Georg Brandl3c8ce772007-11-01 20:58:08 +0000227.. cmdoption:: -d
228
Victor Stinner84c4b192017-11-24 22:30:27 +0100229 Turn on parser debugging output (for expert only, depending on compilation
Georg Brandl3c8ce772007-11-01 20:58:08 +0000230 options). See also :envvar:`PYTHONDEBUG`.
231
232
233.. cmdoption:: -E
234
235 Ignore all :envvar:`PYTHON*` environment variables, e.g.
236 :envvar:`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set.
237
238
239.. cmdoption:: -i
240
241 When a script is passed as first argument or the :option:`-c` option is used,
242 enter interactive mode after executing the script or the command, even when
243 :data:`sys.stdin` does not appear to be a terminal. The
244 :envvar:`PYTHONSTARTUP` file is not read.
Georg Brandl48310cd2009-01-03 21:18:54 +0000245
Georg Brandl3c8ce772007-11-01 20:58:08 +0000246 This can be useful to inspect global variables or a stack trace when a script
247 raises an exception. See also :envvar:`PYTHONINSPECT`.
248
249
Christian Heimesad73a9c2013-08-10 16:36:18 +0200250.. cmdoption:: -I
251
252 Run Python in isolated mode. This also implies -E and -s.
253 In isolated mode :data:`sys.path` contains neither the script's directory nor
254 the user's site-packages directory. All :envvar:`PYTHON*` environment
255 variables are ignored, too. Further restrictions may be imposed to prevent
256 the user from injecting malicious code.
257
258 .. versionadded:: 3.4
259
260
Georg Brandl3c8ce772007-11-01 20:58:08 +0000261.. cmdoption:: -O
262
Berker Peksagf43bc982016-08-20 11:11:52 +0300263 Turn on basic optimizations. See also :envvar:`PYTHONOPTIMIZE`.
Georg Brandl3c8ce772007-11-01 20:58:08 +0000264
265
266.. cmdoption:: -OO
267
268 Discard docstrings in addition to the :option:`-O` optimizations.
269
270
Georg Brandl9d871192010-12-04 10:47:18 +0000271.. cmdoption:: -q
272
273 Don't display the copyright and version messages even in interactive mode.
274
275 .. versionadded:: 3.2
276
277
Georg Brandl2daf6ae2012-02-20 19:54:16 +0100278.. cmdoption:: -R
279
Antoine Pitrou0209dc12012-08-01 14:53:16 +0200280 Kept for compatibility. On Python 3.3 and greater, hash randomization is
281 turned on by default.
Georg Brandl2daf6ae2012-02-20 19:54:16 +0100282
Antoine Pitrou0209dc12012-08-01 14:53:16 +0200283 On previous versions of Python, this option turns on hash randomization,
284 so that the :meth:`__hash__` values of str, bytes and datetime
285 are "salted" with an unpredictable random value. Although they remain
286 constant within an individual Python process, they are not predictable
287 between repeated invocations of Python.
288
289 Hash randomization is intended to provide protection against a
290 denial-of-service caused by carefully-chosen inputs that exploit the worst
291 case performance of a dict construction, O(n^2) complexity. See
Georg Brandl2daf6ae2012-02-20 19:54:16 +0100292 http://www.ocert.org/advisories/ocert-2011-003.html for details.
293
Antoine Pitrou0209dc12012-08-01 14:53:16 +0200294 :envvar:`PYTHONHASHSEED` allows you to set a fixed value for the hash
295 seed secret.
Georg Brandl2daf6ae2012-02-20 19:54:16 +0100296
Georg Brandl09a7c722012-02-20 21:31:46 +0100297 .. versionadded:: 3.2.3
Georg Brandl2daf6ae2012-02-20 19:54:16 +0100298
299
Christian Heimes8dc226f2008-05-06 23:45:46 +0000300.. cmdoption:: -s
301
Éric Araujode4f05b2011-08-06 01:51:07 +0200302 Don't add the :data:`user site-packages directory <site.USER_SITE>` to
303 :data:`sys.path`.
Christian Heimes8dc226f2008-05-06 23:45:46 +0000304
Christian Heimes8dc226f2008-05-06 23:45:46 +0000305 .. seealso::
306
307 :pep:`370` -- Per user site-packages directory
308
309
310.. cmdoption:: -S
311
Georg Brandl3c8ce772007-11-01 20:58:08 +0000312 Disable the import of the module :mod:`site` and the site-dependent
Éric Araujoc09fca62011-03-23 02:06:24 +0100313 manipulations of :data:`sys.path` that it entails. Also disable these
314 manipulations if :mod:`site` is explicitly imported later (call
315 :func:`site.main` if you want them to be triggered).
Georg Brandl3c8ce772007-11-01 20:58:08 +0000316
317
Georg Brandl3c8ce772007-11-01 20:58:08 +0000318.. cmdoption:: -u
Georg Brandl48310cd2009-01-03 21:18:54 +0000319
Berker Peksag7f580972017-10-13 15:16:31 +0300320 Force the stdout and stderr streams to be unbuffered. This option has no
321 effect on the stdin stream.
Georg Brandl48310cd2009-01-03 21:18:54 +0000322
Georg Brandl3c8ce772007-11-01 20:58:08 +0000323 See also :envvar:`PYTHONUNBUFFERED`.
324
Serhiy Storchaka77732be2017-10-04 20:25:40 +0300325 .. versionchanged:: 3.7
326 The text layer of the stdout and stderr streams now is unbuffered.
327
Georg Brandl3c8ce772007-11-01 20:58:08 +0000328
Georg Brandl3c8ce772007-11-01 20:58:08 +0000329.. cmdoption:: -v
Georg Brandl48310cd2009-01-03 21:18:54 +0000330
Georg Brandl3c8ce772007-11-01 20:58:08 +0000331 Print a message each time a module is initialized, showing the place
332 (filename or built-in module) from which it is loaded. When given twice
Martin Panter5c679332016-10-30 04:20:17 +0000333 (:option:`!-vv`), print a message for each file that is checked for when
Georg Brandl3c8ce772007-11-01 20:58:08 +0000334 searching for a module. Also provides information on module cleanup at exit.
335 See also :envvar:`PYTHONVERBOSE`.
336
337
Martin Panterb8c5f542016-10-30 04:20:23 +0000338.. _using-on-warnings:
Georg Brandl3c8ce772007-11-01 20:58:08 +0000339.. cmdoption:: -W arg
Georg Brandl48310cd2009-01-03 21:18:54 +0000340
Georg Brandl3c8ce772007-11-01 20:58:08 +0000341 Warning control. Python's warning machinery by default prints warning
342 messages to :data:`sys.stderr`. A typical warning message has the following
343 form::
344
345 file:line: category: message
Georg Brandl48310cd2009-01-03 21:18:54 +0000346
Georg Brandl3c8ce772007-11-01 20:58:08 +0000347 By default, each warning is printed once for each source line where it
348 occurs. This option controls how often warnings are printed.
349
350 Multiple :option:`-W` options may be given; when a warning matches more than
351 one option, the action for the last matching option is performed. Invalid
352 :option:`-W` options are ignored (though, a warning message is printed about
353 invalid options when the first warning is issued).
Georg Brandl48310cd2009-01-03 21:18:54 +0000354
Georg Brandl3c8ce772007-11-01 20:58:08 +0000355 Warnings can also be controlled from within a Python program using the
356 :mod:`warnings` module.
357
358 The simplest form of argument is one of the following action strings (or a
359 unique abbreviation):
Georg Brandl48310cd2009-01-03 21:18:54 +0000360
Georg Brandl3c8ce772007-11-01 20:58:08 +0000361 ``ignore``
362 Ignore all warnings.
363 ``default``
364 Explicitly request the default behavior (printing each warning once per
365 source line).
366 ``all``
367 Print a warning each time it occurs (this may generate many messages if a
368 warning is triggered repeatedly for the same source line, such as inside a
369 loop).
370 ``module``
Georg Brandleeb575f2009-06-24 06:42:05 +0000371 Print each warning only the first time it occurs in each module.
Georg Brandl3c8ce772007-11-01 20:58:08 +0000372 ``once``
373 Print each warning only the first time it occurs in the program.
374 ``error``
375 Raise an exception instead of printing a warning message.
Georg Brandl48310cd2009-01-03 21:18:54 +0000376
377 The full form of argument is::
378
Georg Brandl3c8ce772007-11-01 20:58:08 +0000379 action:message:category:module:line
380
381 Here, *action* is as explained above but only applies to messages that match
382 the remaining fields. Empty fields match all values; trailing empty fields
383 may be omitted. The *message* field matches the start of the warning message
384 printed; this match is case-insensitive. The *category* field matches the
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000385 warning category. This must be a class name; the match tests whether the
Georg Brandl3c8ce772007-11-01 20:58:08 +0000386 actual warning category of the message is a subclass of the specified warning
387 category. The full class name must be given. The *module* field matches the
388 (fully-qualified) module name; this match is case-sensitive. The *line*
389 field matches the line number, where zero matches all line numbers and is
390 thus equivalent to an omitted line number.
391
392 .. seealso::
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000393 :mod:`warnings` -- the warnings module
Georg Brandl3c8ce772007-11-01 20:58:08 +0000394
395 :pep:`230` -- Warning framework
396
Philip Jenvey0805ca32010-04-07 04:04:10 +0000397 :envvar:`PYTHONWARNINGS`
398
Georg Brandl3c8ce772007-11-01 20:58:08 +0000399
400.. cmdoption:: -x
Georg Brandl48310cd2009-01-03 21:18:54 +0000401
Georg Brandl3c8ce772007-11-01 20:58:08 +0000402 Skip the first line of the source, allowing use of non-Unix forms of
403 ``#!cmd``. This is intended for a DOS specific hack only.
Georg Brandl48310cd2009-01-03 21:18:54 +0000404
Antoine Pitrou9583cac2010-10-21 13:42:28 +0000405
406.. cmdoption:: -X
407
408 Reserved for various implementation-specific options. CPython currently
Victor Stinnered3b0bc2013-11-23 12:27:24 +0100409 defines the following possible values:
Ezio Melotti1f8898a2013-03-26 01:59:56 +0200410
Ezio Melotti711c3702013-03-26 02:38:40 +0200411 * ``-X faulthandler`` to enable :mod:`faulthandler`;
Benjamin Peterson35a1f7f2017-02-09 22:31:17 -0800412 * ``-X showrefcount`` to output the total reference count and number of used
413 memory blocks when the program finishes or after each statement in the
414 interactive interpreter. This only works on debug builds.
Victor Stinner3728d6c2013-11-23 12:37:20 +0100415 * ``-X tracemalloc`` to start tracing Python memory allocations using the
416 :mod:`tracemalloc` module. By default, only the most recent frame is
417 stored in a traceback of a trace. Use ``-X tracemalloc=NFRAME`` to start
418 tracing with a traceback limit of *NFRAME* frames. See the
419 :func:`tracemalloc.start` for more information.
Benjamin Peterson35a1f7f2017-02-09 22:31:17 -0800420 * ``-X showalloccount`` to output the total count of allocated objects for
421 each type when the program finishes. This only works when Python was built with
422 ``COUNT_ALLOCS`` defined.
Barry Warsaw962e2a72017-11-06 18:18:40 -0800423 * ``-X importtime`` to show how long each import takes. It shows module
424 name, cumulative time (including nested imports) and self time (excluding
425 nested imports). Note that its output may be broken in multi-threaded
426 application. Typical usage is ``python3 -X importtime -c 'import
427 asyncio'``. See also :envvar:`PYTHONPROFILEIMPORTTIME`.
Victor Stinner5e3806f2017-11-30 11:40:24 +0100428 * ``-X dev``: enable CPython's "development mode", introducing additional
Victor Stinnerbc9b6e22017-11-20 18:59:50 -0800429 runtime checks which are too expensive to be enabled by default. It should
430 not be more verbose than the default if the code is correct: new warnings
431 are only emitted when an issue is detected. Effect of the developer mode:
Victor Stinnerccb04422017-11-16 03:20:31 -0800432
Victor Stinner747f48e2017-12-12 22:59:48 +0100433 * Add ``default`` warning filter, as :option:`-W` ``default``.
Victor Stinner44862df2017-11-20 07:14:07 -0800434 * Install debug hooks on memory allocators: see the
435 :c:func:`PyMem_SetupDebugHooks` C function.
Victor Stinnerccb04422017-11-16 03:20:31 -0800436 * Enable the :mod:`faulthandler` module to dump the Python traceback
437 on a crash.
Victor Stinner44862df2017-11-20 07:14:07 -0800438 * Enable :ref:`asyncio debug mode <asyncio-debug-mode>`.
Victor Stinner5e3806f2017-11-30 11:40:24 +0100439 * Set the :attr:`~sys.flags.dev_mode` attribute of :attr:`sys.flags` to
440 ``True``
Ezio Melotti1f8898a2013-03-26 01:59:56 +0200441
Victor Stinner91106cd2017-12-13 12:29:09 +0100442 * ``-X utf8`` enables the UTF-8 mode, whereas ``-X utf8=0`` disables the
443 UTF-8 mode.
444
Martin Panterc04fb562016-02-10 05:44:01 +0000445 It also allows passing arbitrary values and retrieving them through the
Ezio Melotti1f8898a2013-03-26 01:59:56 +0200446 :data:`sys._xoptions` dictionary.
Antoine Pitrou9583cac2010-10-21 13:42:28 +0000447
448 .. versionchanged:: 3.2
Benjamin Peterson35a1f7f2017-02-09 22:31:17 -0800449 The :option:`-X` option was added.
Antoine Pitrou9583cac2010-10-21 13:42:28 +0000450
Ezio Melottia1eb4832013-03-26 02:36:28 +0200451 .. versionadded:: 3.3
452 The ``-X faulthandler`` option.
453
Ezio Melotti1f8898a2013-03-26 01:59:56 +0200454 .. versionadded:: 3.4
Victor Stinnered3b0bc2013-11-23 12:27:24 +0100455 The ``-X showrefcount`` and ``-X tracemalloc`` options.
Ezio Melotti1f8898a2013-03-26 01:59:56 +0200456
Serhiy Storchaka7e160ce2016-07-03 21:03:53 +0300457 .. versionadded:: 3.6
458 The ``-X showalloccount`` option.
459
INADA Naoki1a87de72017-10-03 19:46:34 +0900460 .. versionadded:: 3.7
Victor Stinner91106cd2017-12-13 12:29:09 +0100461 The ``-X importtime``, ``-X dev`` and ``-X utf8`` options.
INADA Naoki1a87de72017-10-03 19:46:34 +0900462
Antoine Pitrou9583cac2010-10-21 13:42:28 +0000463
Barry Warsaw615368f2010-02-05 19:12:30 +0000464Options you shouldn't use
465~~~~~~~~~~~~~~~~~~~~~~~~~
466
467.. cmdoption:: -J
468
469 Reserved for use by Jython_.
470
Georg Brandl525d3552014-10-29 10:26:56 +0100471.. _Jython: http://www.jython.org/
Barry Warsaw615368f2010-02-05 19:12:30 +0000472
Georg Brandl2daf6ae2012-02-20 19:54:16 +0100473
Christian Heimesd8654cf2007-12-02 15:22:16 +0000474.. _using-on-envvars:
Georg Brandl3c8ce772007-11-01 20:58:08 +0000475
476Environment variables
477---------------------
478
Andrew Svetlovabfc7df2012-10-17 17:15:43 +0300479These environment variables influence Python's behavior, they are processed
Christian Heimesad73a9c2013-08-10 16:36:18 +0200480before the command-line switches other than -E or -I. It is customary that
Andrew Svetlovabfc7df2012-10-17 17:15:43 +0300481command-line switches override environmental variables where there is a
482conflict.
Christian Heimes790c8232008-01-07 21:14:23 +0000483
Georg Brandl3c8ce772007-11-01 20:58:08 +0000484.. envvar:: PYTHONHOME
Georg Brandl48310cd2009-01-03 21:18:54 +0000485
Georg Brandl3c8ce772007-11-01 20:58:08 +0000486 Change the location of the standard Python libraries. By default, the
Christian Heimese1c98112008-01-21 11:20:28 +0000487 libraries are searched in :file:`{prefix}/lib/python{version}` and
488 :file:`{exec_prefix}/lib/python{version}`, where :file:`{prefix}` and
Georg Brandl3c8ce772007-11-01 20:58:08 +0000489 :file:`{exec_prefix}` are installation-dependent directories, both defaulting
490 to :file:`/usr/local`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000491
Georg Brandl3c8ce772007-11-01 20:58:08 +0000492 When :envvar:`PYTHONHOME` is set to a single directory, its value replaces
493 both :file:`{prefix}` and :file:`{exec_prefix}`. To specify different values
Christian Heimese1c98112008-01-21 11:20:28 +0000494 for these, set :envvar:`PYTHONHOME` to :file:`{prefix}:{exec_prefix}`.
Georg Brandl3c8ce772007-11-01 20:58:08 +0000495
496
497.. envvar:: PYTHONPATH
498
Christian Heimes790c8232008-01-07 21:14:23 +0000499 Augment the default search path for module files. The format is the same as
Georg Brandl3c8ce772007-11-01 20:58:08 +0000500 the shell's :envvar:`PATH`: one or more directory pathnames separated by
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000501 :data:`os.pathsep` (e.g. colons on Unix or semicolons on Windows).
502 Non-existent directories are silently ignored.
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000503
504 In addition to normal directories, individual :envvar:`PYTHONPATH` entries
505 may refer to zipfiles containing pure Python modules (in either source or
506 compiled form). Extension modules cannot be imported from zipfiles.
Georg Brandl48310cd2009-01-03 21:18:54 +0000507
Georg Brandl3c8ce772007-11-01 20:58:08 +0000508 The default search path is installation dependent, but generally begins with
Georg Brandl1f01deb2009-01-03 22:47:39 +0000509 :file:`{prefix}/lib/python{version}` (see :envvar:`PYTHONHOME` above). It
Georg Brandl3c8ce772007-11-01 20:58:08 +0000510 is *always* appended to :envvar:`PYTHONPATH`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000511
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000512 An additional directory will be inserted in the search path in front of
513 :envvar:`PYTHONPATH` as described above under
514 :ref:`using-on-interface-options`. The search path can be manipulated from
515 within a Python program as the variable :data:`sys.path`.
Georg Brandl3c8ce772007-11-01 20:58:08 +0000516
517
518.. envvar:: PYTHONSTARTUP
Georg Brandl48310cd2009-01-03 21:18:54 +0000519
Georg Brandl3c8ce772007-11-01 20:58:08 +0000520 If this is the name of a readable file, the Python commands in that file are
521 executed before the first prompt is displayed in interactive mode. The file
522 is executed in the same namespace where interactive commands are executed so
523 that objects defined or imported in it can be used without qualification in
524 the interactive session. You can also change the prompts :data:`sys.ps1` and
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200525 :data:`sys.ps2` and the hook :data:`sys.__interactivehook__` in this file.
Georg Brandl3c8ce772007-11-01 20:58:08 +0000526
527
Georg Brandl3c8ce772007-11-01 20:58:08 +0000528.. envvar:: PYTHONOPTIMIZE
Georg Brandl48310cd2009-01-03 21:18:54 +0000529
Georg Brandl3c8ce772007-11-01 20:58:08 +0000530 If this is set to a non-empty string it is equivalent to specifying the
531 :option:`-O` option. If set to an integer, it is equivalent to specifying
532 :option:`-O` multiple times.
533
534
Barry Warsaw36c1d1f2017-10-05 12:11:18 -0400535.. envvar:: PYTHONBREAKPOINT
536
537 If this is set, it names a callable using dotted-path notation. The module
538 containing the callable will be imported and then the callable will be run
539 by the default implementation of :func:`sys.breakpointhook` which itself is
540 called by built-in :func:`breakpoint`. If not set, or set to the empty
541 string, it is equivalent to the value "pdb.set_trace". Setting this to the
542 string "0" causes the default implementation of :func:`sys.breakpointhook`
543 to do nothing but return immediately.
544
545 .. versionadded:: 3.7
546
Georg Brandl3c8ce772007-11-01 20:58:08 +0000547.. envvar:: PYTHONDEBUG
Georg Brandl48310cd2009-01-03 21:18:54 +0000548
Georg Brandl3c8ce772007-11-01 20:58:08 +0000549 If this is set to a non-empty string it is equivalent to specifying the
550 :option:`-d` option. If set to an integer, it is equivalent to specifying
551 :option:`-d` multiple times.
552
553
554.. envvar:: PYTHONINSPECT
Georg Brandl48310cd2009-01-03 21:18:54 +0000555
Georg Brandl3c8ce772007-11-01 20:58:08 +0000556 If this is set to a non-empty string it is equivalent to specifying the
557 :option:`-i` option.
558
Christian Heimes790c8232008-01-07 21:14:23 +0000559 This variable can also be modified by Python code using :data:`os.environ`
560 to force inspect mode on program termination.
561
Georg Brandl3c8ce772007-11-01 20:58:08 +0000562
563.. envvar:: PYTHONUNBUFFERED
Georg Brandl48310cd2009-01-03 21:18:54 +0000564
Georg Brandl3c8ce772007-11-01 20:58:08 +0000565 If this is set to a non-empty string it is equivalent to specifying the
566 :option:`-u` option.
567
568
569.. envvar:: PYTHONVERBOSE
Georg Brandl48310cd2009-01-03 21:18:54 +0000570
Georg Brandl3c8ce772007-11-01 20:58:08 +0000571 If this is set to a non-empty string it is equivalent to specifying the
572 :option:`-v` option. If set to an integer, it is equivalent to specifying
573 :option:`-v` multiple times.
574
575
576.. envvar:: PYTHONCASEOK
Georg Brandl48310cd2009-01-03 21:18:54 +0000577
Georg Brandl3c8ce772007-11-01 20:58:08 +0000578 If this is set, Python ignores case in :keyword:`import` statements. This
Brett Cannonfc70cbc2012-01-26 18:30:52 -0500579 only works on Windows and OS X.
Georg Brandl3c8ce772007-11-01 20:58:08 +0000580
Christian Heimes790c8232008-01-07 21:14:23 +0000581
582.. envvar:: PYTHONDONTWRITEBYTECODE
583
Xiang Zhang0710d752017-03-11 13:02:52 +0800584 If this is set to a non-empty string, Python won't try to write ``.pyc``
585 files on the import of source modules. This is equivalent to
Victor Stinner88983502013-09-08 11:36:23 +0200586 specifying the :option:`-B` option.
Christian Heimes790c8232008-01-07 21:14:23 +0000587
Christian Heimes790c8232008-01-07 21:14:23 +0000588
Georg Brandl2daf6ae2012-02-20 19:54:16 +0100589.. envvar:: PYTHONHASHSEED
590
Antoine Pitrou0209dc12012-08-01 14:53:16 +0200591 If this variable is not set or set to ``random``, a random value is used
592 to seed the hashes of str, bytes and datetime objects.
Georg Brandl2daf6ae2012-02-20 19:54:16 +0100593
594 If :envvar:`PYTHONHASHSEED` is set to an integer value, it is used as a fixed
595 seed for generating the hash() of the types covered by the hash
596 randomization.
597
598 Its purpose is to allow repeatable hashing, such as for selftests for the
599 interpreter itself, or to allow a cluster of python processes to share hash
600 values.
601
602 The integer must be a decimal number in the range [0,4294967295]. Specifying
Benjamin Petersonc9f54cf2012-02-21 16:08:05 -0500603 the value 0 will disable hash randomization.
Georg Brandl2daf6ae2012-02-20 19:54:16 +0100604
Georg Brandl09a7c722012-02-20 21:31:46 +0100605 .. versionadded:: 3.2.3
Georg Brandl2daf6ae2012-02-20 19:54:16 +0100606
607
Georg Brandl2c906f12008-06-11 18:03:09 +0000608.. envvar:: PYTHONIOENCODING
609
Éric Araujo358b63a2010-08-18 22:35:23 +0000610 If this is set before running the interpreter, it overrides the encoding used
Serhiy Storchakabf28d2d2013-09-13 11:46:24 +0300611 for stdin/stdout/stderr, in the syntax ``encodingname:errorhandler``. Both
612 the ``encodingname`` and the ``:errorhandler`` parts are optional and have
613 the same meaning as in :func:`str.encode`.
Georg Brandl2c906f12008-06-11 18:03:09 +0000614
Georg Brandl559e5d72008-06-11 18:37:52 +0000615 For stderr, the ``:errorhandler`` part is ignored; the handler will always be
616 ``'backslashreplace'``.
617
Serhiy Storchakabf28d2d2013-09-13 11:46:24 +0300618 .. versionchanged:: 3.4
619 The ``encodingname`` part is now optional.
620
Steve Dower39294992016-08-30 21:22:36 -0700621 .. versionchanged:: 3.6
622 On Windows, the encoding specified by this variable is ignored for interactive
Berker Peksag87fa8a72017-05-16 12:36:45 +0300623 console buffers unless :envvar:`PYTHONLEGACYWINDOWSSTDIO` is also specified.
Steve Dower39294992016-08-30 21:22:36 -0700624 Files and pipes redirected through the standard streams are not affected.
Georg Brandl2c906f12008-06-11 18:03:09 +0000625
Christian Heimes8dc226f2008-05-06 23:45:46 +0000626.. envvar:: PYTHONNOUSERSITE
627
Éric Araujode4f05b2011-08-06 01:51:07 +0200628 If this is set, Python won't add the :data:`user site-packages directory
629 <site.USER_SITE>` to :data:`sys.path`.
Christian Heimes8dc226f2008-05-06 23:45:46 +0000630
631 .. seealso::
632
633 :pep:`370` -- Per user site-packages directory
634
635
636.. envvar:: PYTHONUSERBASE
637
Éric Araujode4f05b2011-08-06 01:51:07 +0200638 Defines the :data:`user base directory <site.USER_BASE>`, which is used to
639 compute the path of the :data:`user site-packages directory <site.USER_SITE>`
Éric Araujo859aad62012-06-24 00:07:41 -0400640 and :ref:`Distutils installation paths <inst-alt-install-user>` for
641 ``python setup.py install --user``.
Christian Heimes8dc226f2008-05-06 23:45:46 +0000642
643 .. seealso::
644
645 :pep:`370` -- Per user site-packages directory
646
647
Christian Heimes790c8232008-01-07 21:14:23 +0000648.. envvar:: PYTHONEXECUTABLE
649
650 If this environment variable is set, ``sys.argv[0]`` will be set to its
651 value instead of the value got through the C runtime. Only works on
Georg Brandlc575c902008-09-13 17:46:05 +0000652 Mac OS X.
Christian Heimes790c8232008-01-07 21:14:23 +0000653
Philip Jenvey0805ca32010-04-07 04:04:10 +0000654.. envvar:: PYTHONWARNINGS
655
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000656 This is equivalent to the :option:`-W` option. If set to a comma
Philip Jenvey0805ca32010-04-07 04:04:10 +0000657 separated string, it is equivalent to specifying :option:`-W` multiple
658 times.
659
Victor Stinner024e37a2011-03-31 01:31:06 +0200660.. envvar:: PYTHONFAULTHANDLER
661
Victor Stinner88983502013-09-08 11:36:23 +0200662 If this environment variable is set to a non-empty string,
663 :func:`faulthandler.enable` is called at startup: install a handler for
664 :const:`SIGSEGV`, :const:`SIGFPE`, :const:`SIGABRT`, :const:`SIGBUS` and
665 :const:`SIGILL` signals to dump the Python traceback. This is equivalent to
666 :option:`-X` ``faulthandler`` option.
Victor Stinner024e37a2011-03-31 01:31:06 +0200667
Victor Stinnerae6d05b2013-07-28 02:56:50 +0200668 .. versionadded:: 3.3
669
Christian Heimes790c8232008-01-07 21:14:23 +0000670
Victor Stinnered3b0bc2013-11-23 12:27:24 +0100671.. envvar:: PYTHONTRACEMALLOC
672
Victor Stinner3728d6c2013-11-23 12:37:20 +0100673 If this environment variable is set to a non-empty string, start tracing
674 Python memory allocations using the :mod:`tracemalloc` module. The value of
675 the variable is the maximum number of frames stored in a traceback of a
676 trace. For example, ``PYTHONTRACEMALLOC=1`` stores only the most recent
677 frame. See the :func:`tracemalloc.start` for more information.
Victor Stinnered3b0bc2013-11-23 12:27:24 +0100678
679 .. versionadded:: 3.4
680
681
Barry Warsaw700d2e42017-11-02 16:13:36 -0700682.. envvar:: PYTHONPROFILEIMPORTTIME
683
684 If this environment variable is set to a non-empty string, Python will
685 show how long each import takes. This is exactly equivalent to setting
686 ``-X importtime`` on the command line.
687
688 .. versionadded:: 3.7
689
690
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100691.. envvar:: PYTHONASYNCIODEBUG
692
Victor Stinner62511fd2014-06-23 00:36:11 +0200693 If this environment variable is set to a non-empty string, enable the
694 :ref:`debug mode <asyncio-debug-mode>` of the :mod:`asyncio` module.
Victor Stinner0f3e6bc2014-02-19 23:15:02 +0100695
696 .. versionadded:: 3.4
697
698
Victor Stinner34be807c2016-03-14 12:04:26 +0100699.. envvar:: PYTHONMALLOC
700
701 Set the Python memory allocators and/or install debug hooks.
702
703 Set the family of memory allocators used by Python:
704
Victor Stinner5d39e042017-11-29 17:20:38 +0100705 * ``default``: use the :ref:`default memory allocators
706 <default-memory-allocators>`.
Victor Stinner34be807c2016-03-14 12:04:26 +0100707 * ``malloc``: use the :c:func:`malloc` function of the C library
Victor Stinnerf5c4b992016-04-22 16:26:23 +0200708 for all domains (:c:data:`PYMEM_DOMAIN_RAW`, :c:data:`PYMEM_DOMAIN_MEM`,
709 :c:data:`PYMEM_DOMAIN_OBJ`).
710 * ``pymalloc``: use the :ref:`pymalloc allocator <pymalloc>` for
711 :c:data:`PYMEM_DOMAIN_MEM` and :c:data:`PYMEM_DOMAIN_OBJ` domains and use
712 the :c:func:`malloc` function for the :c:data:`PYMEM_DOMAIN_RAW` domain.
Victor Stinner34be807c2016-03-14 12:04:26 +0100713
714 Install debug hooks:
715
Victor Stinner5d39e042017-11-29 17:20:38 +0100716 * ``debug``: install debug hooks on top of the :ref:`default memory
717 allocators <default-memory-allocators>`.
Victor Stinnerc2fc5682016-03-18 11:04:31 +0100718 * ``malloc_debug``: same as ``malloc`` but also install debug hooks
Victor Stinner9b46a572016-03-18 15:10:43 +0100719 * ``pymalloc_debug``: same as ``pymalloc`` but also install debug hooks
Victor Stinnerc2fc5682016-03-18 11:04:31 +0100720
Victor Stinner5d39e042017-11-29 17:20:38 +0100721 See the :ref:`default memory allocators <default-memory-allocators>` and the
722 :c:func:`PyMem_SetupDebugHooks` function (install debug hooks on Python
723 memory allocators).
Victor Stinnerc2fc5682016-03-18 11:04:31 +0100724
Victor Stinner5d39e042017-11-29 17:20:38 +0100725 .. versionchanged:: 3.7
726 Added the ``"default"`` allocator.
Victor Stinner34be807c2016-03-14 12:04:26 +0100727
Victor Stinner34be807c2016-03-14 12:04:26 +0100728 .. versionadded:: 3.6
729
730
731.. envvar:: PYTHONMALLOCSTATS
732
733 If set to a non-empty string, Python will print statistics of the
734 :ref:`pymalloc memory allocator <pymalloc>` every time a new pymalloc object
735 arena is created, and on shutdown.
736
737 This variable is ignored if the :envvar:`PYTHONMALLOC` environment variable
738 is used to force the :c:func:`malloc` allocator of the C library, or if
739 Python is configured without ``pymalloc`` support.
740
741 .. versionchanged:: 3.6
742 This variable can now also be used on Python compiled in release mode.
743 It now has no effect if set to an empty string.
744
745
Steve Dowercc16be82016-09-08 10:35:16 -0700746.. envvar:: PYTHONLEGACYWINDOWSFSENCODING
747
748 If set to a non-empty string, the default filesystem encoding and errors mode
749 will revert to their pre-3.6 values of 'mbcs' and 'replace', respectively.
750 Otherwise, the new defaults 'utf-8' and 'surrogatepass' are used.
751
752 This may also be enabled at runtime with
753 :func:`sys._enablelegacywindowsfsencoding()`.
754
755 Availability: Windows
756
757 .. versionadded:: 3.6
758 See :pep:`529` for more details.
759
Berker Peksag87fa8a72017-05-16 12:36:45 +0300760.. envvar:: PYTHONLEGACYWINDOWSSTDIO
Steve Dower39294992016-08-30 21:22:36 -0700761
762 If set to a non-empty string, does not use the new console reader and
763 writer. This means that Unicode characters will be encoded according to
764 the active console code page, rather than using utf-8.
765
766 This variable is ignored if the standard streams are redirected (to files
767 or pipes) rather than referring to console buffers.
768
769 Availability: Windows
770
771 .. versionadded:: 3.6
772
Nick Coghlan6ea41862017-06-11 13:16:15 +1000773
774.. envvar:: PYTHONCOERCECLOCALE
775
776 If set to the value ``0``, causes the main Python command line application
777 to skip coercing the legacy ASCII-based C locale to a more capable UTF-8
778 based alternative. Note that this setting is checked even when the
779 :option:`-E` or :option:`-I` options are used, as it is handled prior to
780 the processing of command line options.
781
782 If this variable is *not* set, or is set to a value other than ``0``, and
783 the current locale reported for the ``LC_CTYPE`` category is the default
784 ``C`` locale, then the Python CLI will attempt to configure the following
785 locales for the ``LC_CTYPE`` category in the order listed before loading the
786 interpreter runtime:
787
788 * ``C.UTF-8``
789 * ``C.utf8``
790 * ``UTF-8``
791
792 If setting one of these locale categories succeeds, then the ``LC_CTYPE``
793 environment variable will also be set accordingly in the current process
794 environment before the Python runtime is initialized. This ensures the
795 updated setting is seen in subprocesses, as well as in operations that
796 query the environment rather than the current C locale (such as Python's
797 own :func:`locale.getdefaultlocale`).
798
799 Configuring one of these locales (either explicitly or via the above
800 implicit locale coercion) will automatically set the error handler for
801 :data:`sys.stdin` and :data:`sys.stdout` to ``surrogateescape``. This
802 behavior can be overridden using :envvar:`PYTHONIOENCODING` as usual.
803
Nick Coghlaneb817952017-06-18 12:29:42 +1000804 For debugging purposes, setting ``PYTHONCOERCECLOCALE=warn`` will cause
805 Python to emit warning messages on ``stderr`` if either the locale coercion
806 activates, or else if a locale that *would* have triggered coercion is
807 still active when the Python runtime is initialized.
808
Nick Coghlan6ea41862017-06-11 13:16:15 +1000809 Availability: \*nix
810
811 .. versionadded:: 3.7
812 See :pep:`538` for more details.
813
Victor Stinner5e3806f2017-11-30 11:40:24 +0100814
815.. envvar:: PYTHONDEVMODE
816
817 If this environment variable is set to a non-empty string, enable the
818 CPython "development mode". See the :option:`-X` ``dev`` option.
819
820 .. versionadded:: 3.7
821
Victor Stinner91106cd2017-12-13 12:29:09 +0100822.. envvar:: PYTHONUTF8
823
824 If set to ``1``, enable the UTF-8 mode. If set to ``0``, disable the UTF-8
825 mode. Any other non-empty string cause an error.
826
827 .. versionadded:: 3.7
828
829
Christian Heimes790c8232008-01-07 21:14:23 +0000830Debug-mode variables
831~~~~~~~~~~~~~~~~~~~~
832
833Setting these variables only has an effect in a debug build of Python, that is,
Éric Araujod2f8cec2011-06-08 05:29:39 +0200834if Python was configured with the ``--with-pydebug`` build option.
Christian Heimes790c8232008-01-07 21:14:23 +0000835
836.. envvar:: PYTHONTHREADDEBUG
837
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000838 If set, Python will print threading debug info.
Christian Heimes790c8232008-01-07 21:14:23 +0000839
Christian Heimes790c8232008-01-07 21:14:23 +0000840
841.. envvar:: PYTHONDUMPREFS
842
843 If set, Python will dump objects and reference counts still alive after
844 shutting down the interpreter.