1.. highlight:: 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 [-bBdEhiIOqsSuvVWx?] [-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 .. audit-event:: cpython.run_command command cmdoption-c 74 75.. cmdoption:: -m <module-name> 76 77 Search :data:`sys.path` for the named module and execute its contents as 78 the :mod:`__main__` module. 79 80 Since the argument is a *module* name, you must not give a file extension 81 (``.py``). The module name should be a valid absolute Python module name, but 82 the implementation may not always enforce this (e.g. it may allow you to 83 use a name that includes a hyphen). 84 85 Package names (including namespace packages) are also permitted. When a 86 package name is supplied instead 87 of a normal module, the interpreter will execute ``<pkg>.__main__`` as 88 the main module. This behaviour is deliberately similar to the handling 89 of directories and zipfiles that are passed to the interpreter as the 90 script argument. 91 92 .. note:: 93 94 This option cannot be used with built-in modules and extension modules 95 written in C, since they do not have Python module files. However, it 96 can still be used for precompiled modules, even if the original source 97 file is not available. 98 99 If this option is given, the first element of :data:`sys.argv` will be the 100 full path to the module file (while the module file is being located, the 101 first element will be set to ``"-m"``). As with the :option:`-c` option, 102 the current directory will be added to the start of :data:`sys.path`. 103 104 :option:`-I` option can be used to run the script in isolated mode where 105 :data:`sys.path` contains neither the current directory nor the user's 106 site-packages directory. All :envvar:`PYTHON*` environment variables are 107 ignored, too. 108 109 Many standard library modules contain code that is invoked on their execution 110 as a script. An example is the :mod:`timeit` module:: 111 112 python -m timeit -s 'setup here' 'benchmarked code here' 113 python -m timeit -h # for details 114 115 .. audit-event:: cpython.run_module module-name cmdoption-m 116 117 .. seealso:: 118 :func:`runpy.run_module` 119 Equivalent functionality directly available to Python code 120 121 :pep:`338` -- Executing modules as scripts 122 123 .. versionchanged:: 3.1 124 Supply the package name to run a ``__main__`` submodule. 125 126 .. versionchanged:: 3.4 127 namespace packages are also supported 128 129.. _cmdarg-dash: 130 131.. describe:: - 132 133 Read commands from standard input (:data:`sys.stdin`). If standard input is 134 a terminal, :option:`-i` is implied. 135 136 If this option is given, the first element of :data:`sys.argv` will be 137 ``"-"`` and the current directory will be added to the start of 138 :data:`sys.path`. 139 140 .. audit-event:: cpython.run_stdin "" "" 141 142.. _cmdarg-script: 143 144.. describe:: <script> 145 146 Execute the Python code contained in *script*, which must be a filesystem 147 path (absolute or relative) referring to either a Python file, a directory 148 containing a ``__main__.py`` file, or a zipfile containing a 149 ``__main__.py`` file. 150 151 If this option is given, the first element of :data:`sys.argv` will be the 152 script name as given on the command line. 153 154 If the script name refers directly to a Python file, the directory 155 containing that file is added to the start of :data:`sys.path`, and the 156 file is executed as the :mod:`__main__` module. 157 158 If the script name refers to a directory or zipfile, the script name is 159 added to the start of :data:`sys.path` and the ``__main__.py`` file in 160 that location is executed as the :mod:`__main__` module. 161 162 :option:`-I` option can be used to run the script in isolated mode where 163 :data:`sys.path` contains neither the script's directory nor the user's 164 site-packages directory. All :envvar:`PYTHON*` environment variables are 165 ignored, too. 166 167 .. audit-event:: cpython.run_file filename 168 169 .. seealso:: 170 :func:`runpy.run_path` 171 Equivalent functionality directly available to Python code 172 173 174If no interface option is given, :option:`-i` is implied, ``sys.argv[0]`` is 175an empty string (``""``) and the current directory will be added to the 176start of :data:`sys.path`. Also, tab-completion and history editing is 177automatically enabled, if available on your platform (see 178:ref:`rlcompleter-config`). 179 180.. seealso:: :ref:`tut-invoking` 181 182.. versionchanged:: 3.4 183 Automatic enabling of tab-completion and history editing. 184 185 186.. _using-on-generic-options: 187 188Generic options 189~~~~~~~~~~~~~~~ 190 191.. cmdoption:: -? 192 -h 193 --help 194 195 Print a short description of all command line options and corresponding 196 environment variables and exit. 197 198.. cmdoption:: --help-env 199 200 Print a short description of Python-specific environment variables 201 and exit. 202 203 .. versionadded:: 3.11 204 205.. cmdoption:: --help-xoptions 206 207 Print a description of implementation-specific :option:`-X` options 208 and exit. 209 210 .. versionadded:: 3.11 211 212.. cmdoption:: --help-all 213 214 Print complete usage information and exit. 215 216 .. versionadded:: 3.11 217 218.. cmdoption:: -V 219 --version 220 221 Print the Python version number and exit. Example output could be: 222 223 .. code-block:: none 224 225 Python 3.8.0b2+ 226 227 When given twice, print more information about the build, like: 228 229 .. code-block:: none 230 231 Python 3.8.0b2+ (3.8:0c076caaa8, Apr 20 2019, 21:55:00) 232 [GCC 6.2.0 20161005] 233 234 .. versionadded:: 3.6 235 The ``-VV`` option. 236 237 238.. _using-on-misc-options: 239 240Miscellaneous options 241~~~~~~~~~~~~~~~~~~~~~ 242 243.. cmdoption:: -b 244 245 Issue a warning when comparing :class:`bytes` or :class:`bytearray` with 246 :class:`str` or :class:`bytes` with :class:`int`. Issue an error when the 247 option is given twice (:option:`!-bb`). 248 249 .. versionchanged:: 3.5 250 Affects comparisons of :class:`bytes` with :class:`int`. 251 252.. cmdoption:: -B 253 254 If given, Python won't try to write ``.pyc`` files on the 255 import of source modules. See also :envvar:`PYTHONDONTWRITEBYTECODE`. 256 257 258.. cmdoption:: --check-hash-based-pycs default|always|never 259 260 Control the validation behavior of hash-based ``.pyc`` files. See 261 :ref:`pyc-invalidation`. When set to ``default``, checked and unchecked 262 hash-based bytecode cache files are validated according to their default 263 semantics. When set to ``always``, all hash-based ``.pyc`` files, whether 264 checked or unchecked, are validated against their corresponding source 265 file. When set to ``never``, hash-based ``.pyc`` files are not validated 266 against their corresponding source files. 267 268 The semantics of timestamp-based ``.pyc`` files are unaffected by this 269 option. 270 271 272.. cmdoption:: -d 273 274 Turn on parser debugging output (for expert only, depending on compilation 275 options). See also :envvar:`PYTHONDEBUG`. 276 277 278.. cmdoption:: -E 279 280 Ignore all :envvar:`PYTHON*` environment variables, e.g. 281 :envvar:`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set. 282 283 See also the :option:`-P` and :option:`-I` (isolated) options. 284 285 286.. cmdoption:: -i 287 288 When a script is passed as first argument or the :option:`-c` option is used, 289 enter interactive mode after executing the script or the command, even when 290 :data:`sys.stdin` does not appear to be a terminal. The 291 :envvar:`PYTHONSTARTUP` file is not read. 292 293 This can be useful to inspect global variables or a stack trace when a script 294 raises an exception. See also :envvar:`PYTHONINSPECT`. 295 296 297.. cmdoption:: -I 298 299 Run Python in isolated mode. This also implies :option:`-E`, :option:`-P` 300 and :option:`-s` options. 301 302 In isolated mode :data:`sys.path` contains neither the script's directory nor 303 the user's site-packages directory. All :envvar:`PYTHON*` environment 304 variables are ignored, too. Further restrictions may be imposed to prevent 305 the user from injecting malicious code. 306 307 .. versionadded:: 3.4 308 309 310.. cmdoption:: -O 311 312 Remove assert statements and any code conditional on the value of 313 :const:`__debug__`. Augment the filename for compiled 314 (:term:`bytecode`) files by adding ``.opt-1`` before the ``.pyc`` 315 extension (see :pep:`488`). See also :envvar:`PYTHONOPTIMIZE`. 316 317 .. versionchanged:: 3.5 318 Modify ``.pyc`` filenames according to :pep:`488`. 319 320 321.. cmdoption:: -OO 322 323 Do :option:`-O` and also discard docstrings. Augment the filename 324 for compiled (:term:`bytecode`) files by adding ``.opt-2`` before the 325 ``.pyc`` extension (see :pep:`488`). 326 327 .. versionchanged:: 3.5 328 Modify ``.pyc`` filenames according to :pep:`488`. 329 330 331.. cmdoption:: -P 332 333 Don't prepend a potentially unsafe path to :data:`sys.path`: 334 335 * ``python -m module`` command line: Don't prepend the current working 336 directory. 337 * ``python script.py`` command line: Don't prepend the script's directory. 338 If it's a symbolic link, resolve symbolic links. 339 * ``python -c code`` and ``python`` (REPL) command lines: Don't prepend an 340 empty string, which means the current working directory. 341 342 See also the :envvar:`PYTHONSAFEPATH` environment variable, and :option:`-E` 343 and :option:`-I` (isolated) options. 344 345 .. versionadded:: 3.11 346 347 348.. cmdoption:: -q 349 350 Don't display the copyright and version messages even in interactive mode. 351 352 .. versionadded:: 3.2 353 354 355.. cmdoption:: -R 356 357 Turn on hash randomization. This option only has an effect if the 358 :envvar:`PYTHONHASHSEED` environment variable is set to ``0``, since hash 359 randomization is enabled by default. 360 361 On previous versions of Python, this option turns on hash randomization, 362 so that the :meth:`__hash__` values of str and bytes objects 363 are "salted" with an unpredictable random value. Although they remain 364 constant within an individual Python process, they are not predictable 365 between repeated invocations of Python. 366 367 Hash randomization is intended to provide protection against a 368 denial-of-service caused by carefully chosen inputs that exploit the worst 369 case performance of a dict construction, O(n\ :sup:`2`) complexity. See 370 http://ocert.org/advisories/ocert-2011-003.html for details. 371 372 :envvar:`PYTHONHASHSEED` allows you to set a fixed value for the hash 373 seed secret. 374 375 .. versionchanged:: 3.7 376 The option is no longer ignored. 377 378 .. versionadded:: 3.2.3 379 380 381.. cmdoption:: -s 382 383 Don't add the :data:`user site-packages directory <site.USER_SITE>` to 384 :data:`sys.path`. 385 386 .. seealso:: 387 388 :pep:`370` -- Per user site-packages directory 389 390 391.. cmdoption:: -S 392 393 Disable the import of the module :mod:`site` and the site-dependent 394 manipulations of :data:`sys.path` that it entails. Also disable these 395 manipulations if :mod:`site` is explicitly imported later (call 396 :func:`site.main` if you want them to be triggered). 397 398 399.. cmdoption:: -u 400 401 Force the stdout and stderr streams to be unbuffered. This option has no 402 effect on the stdin stream. 403 404 See also :envvar:`PYTHONUNBUFFERED`. 405 406 .. versionchanged:: 3.7 407 The text layer of the stdout and stderr streams now is unbuffered. 408 409 410.. cmdoption:: -v 411 412 Print a message each time a module is initialized, showing the place 413 (filename or built-in module) from which it is loaded. When given twice 414 (:option:`!-vv`), print a message for each file that is checked for when 415 searching for a module. Also provides information on module cleanup at exit. 416 417 .. versionchanged:: 3.10 418 The :mod:`site` module reports the site-specific paths 419 and :file:`.pth` files being processed. 420 421 See also :envvar:`PYTHONVERBOSE`. 422 423 424.. _using-on-warnings: 425.. cmdoption:: -W arg 426 427 Warning control. Python's warning machinery by default prints warning 428 messages to :data:`sys.stderr`. 429 430 The simplest settings apply a particular action unconditionally to all 431 warnings emitted by a process (even those that are otherwise ignored by 432 default):: 433 434 -Wdefault # Warn once per call location 435 -Werror # Convert to exceptions 436 -Walways # Warn every time 437 -Wmodule # Warn once per calling module 438 -Wonce # Warn once per Python process 439 -Wignore # Never warn 440 441 The action names can be abbreviated as desired and the interpreter will 442 resolve them to the appropriate action name. For example, ``-Wi`` is the 443 same as ``-Wignore``. 444 445 The full form of argument is:: 446 447 action:message:category:module:lineno 448 449 Empty fields match all values; trailing empty fields may be omitted. For 450 example ``-W ignore::DeprecationWarning`` ignores all DeprecationWarning 451 warnings. 452 453 The *action* field is as explained above but only applies to warnings that 454 match the remaining fields. 455 456 The *message* field must match the whole warning message; this match is 457 case-insensitive. 458 459 The *category* field matches the warning category 460 (ex: ``DeprecationWarning``). This must be a class name; the match test 461 whether the actual warning category of the message is a subclass of the 462 specified warning category. 463 464 The *module* field matches the (fully qualified) module name; this match is 465 case-sensitive. 466 467 The *lineno* field matches the line number, where zero matches all line 468 numbers and is thus equivalent to an omitted line number. 469 470 Multiple :option:`-W` options can be given; when a warning matches more than 471 one option, the action for the last matching option is performed. Invalid 472 :option:`-W` options are ignored (though, a warning message is printed about 473 invalid options when the first warning is issued). 474 475 Warnings can also be controlled using the :envvar:`PYTHONWARNINGS` 476 environment variable and from within a Python program using the 477 :mod:`warnings` module. For example, the :func:`warnings.filterwarnings` 478 function can be used to use a regular expression on the warning message. 479 480 See :ref:`warning-filter` and :ref:`describing-warning-filters` for more 481 details. 482 483 484.. cmdoption:: -x 485 486 Skip the first line of the source, allowing use of non-Unix forms of 487 ``#!cmd``. This is intended for a DOS specific hack only. 488 489 490.. cmdoption:: -X 491 492 Reserved for various implementation-specific options. CPython currently 493 defines the following possible values: 494 495 * ``-X faulthandler`` to enable :mod:`faulthandler`. 496 See also :envvar:`PYTHONFAULTHANDLER`. 497 * ``-X showrefcount`` to output the total reference count and number of used 498 memory blocks when the program finishes or after each statement in the 499 interactive interpreter. This only works on :ref:`debug builds 500 <debug-build>`. 501 * ``-X tracemalloc`` to start tracing Python memory allocations using the 502 :mod:`tracemalloc` module. By default, only the most recent frame is 503 stored in a traceback of a trace. Use ``-X tracemalloc=NFRAME`` to start 504 tracing with a traceback limit of *NFRAME* frames. 505 See :func:`tracemalloc.start` and :envvar:`PYTHONTRACEMALLOC` 506 for more information. 507 * ``-X int_max_str_digits`` configures the :ref:`integer string conversion 508 length limitation <int_max_str_digits>`. See also 509 :envvar:`PYTHONINTMAXSTRDIGITS`. 510 * ``-X importtime`` to show how long each import takes. It shows module 511 name, cumulative time (including nested imports) and self time (excluding 512 nested imports). Note that its output may be broken in multi-threaded 513 application. Typical usage is ``python3 -X importtime -c 'import 514 asyncio'``. See also :envvar:`PYTHONPROFILEIMPORTTIME`. 515 * ``-X dev``: enable :ref:`Python Development Mode <devmode>`, introducing 516 additional runtime checks that are too expensive to be enabled by 517 default. 518 * ``-X utf8`` enables the :ref:`Python UTF-8 Mode <utf8-mode>`. 519 ``-X utf8=0`` explicitly disables :ref:`Python UTF-8 Mode <utf8-mode>` 520 (even when it would otherwise activate automatically). 521 See also :envvar:`PYTHONUTF8`. 522 * ``-X pycache_prefix=PATH`` enables writing ``.pyc`` files to a parallel 523 tree rooted at the given directory instead of to the code tree. See also 524 :envvar:`PYTHONPYCACHEPREFIX`. 525 * ``-X warn_default_encoding`` issues a :class:`EncodingWarning` when the 526 locale-specific default encoding is used for opening files. 527 See also :envvar:`PYTHONWARNDEFAULTENCODING`. 528 * ``-X no_debug_ranges`` disables the inclusion of the tables mapping extra 529 location information (end line, start column offset and end column offset) 530 to every instruction in code objects. This is useful when smaller code 531 objects and pyc files are desired as well as suppressing the extra visual 532 location indicators when the interpreter displays tracebacks. See also 533 :envvar:`PYTHONNODEBUGRANGES`. 534 * ``-X frozen_modules`` determines whether or not frozen modules are 535 ignored by the import machinery. A value of "on" means they get 536 imported and "off" means they are ignored. The default is "on" 537 if this is an installed Python (the normal case). If it's under 538 development (running from the source tree) then the default is "off". 539 Note that the "importlib_bootstrap" and "importlib_bootstrap_external" 540 frozen modules are always used, even if this flag is set to "off". 541 542 It also allows passing arbitrary values and retrieving them through the 543 :data:`sys._xoptions` dictionary. 544 545 .. versionchanged:: 3.2 546 The :option:`-X` option was added. 547 548 .. versionadded:: 3.3 549 The ``-X faulthandler`` option. 550 551 .. versionadded:: 3.4 552 The ``-X showrefcount`` and ``-X tracemalloc`` options. 553 554 .. versionadded:: 3.6 555 The ``-X showalloccount`` option. 556 557 .. versionadded:: 3.7 558 The ``-X importtime``, ``-X dev`` and ``-X utf8`` options. 559 560 .. versionadded:: 3.8 561 The ``-X pycache_prefix`` option. The ``-X dev`` option now logs 562 ``close()`` exceptions in :class:`io.IOBase` destructor. 563 564 .. versionchanged:: 3.9 565 Using ``-X dev`` option, check *encoding* and *errors* arguments on 566 string encoding and decoding operations. 567 568 The ``-X showalloccount`` option has been removed. 569 570 .. versionadded:: 3.10 571 The ``-X warn_default_encoding`` option. 572 573 .. deprecated-removed:: 3.9 3.10 574 The ``-X oldparser`` option. 575 576 .. versionadded:: 3.11 577 The ``-X no_debug_ranges`` option. 578 579 .. versionadded:: 3.11 580 The ``-X frozen_modules`` option. 581 582 .. versionadded:: 3.11 583 The ``-X int_max_str_digits`` option. 584 585 586Options you shouldn't use 587~~~~~~~~~~~~~~~~~~~~~~~~~ 588 589.. cmdoption:: -J 590 591 Reserved for use by Jython_. 592 593.. _Jython: https://www.jython.org/ 594 595 596.. _using-on-envvars: 597 598Environment variables 599--------------------- 600 601These environment variables influence Python's behavior, they are processed 602before the command-line switches other than -E or -I. It is customary that 603command-line switches override environmental variables where there is a 604conflict. 605 606.. envvar:: PYTHONHOME 607 608 Change the location of the standard Python libraries. By default, the 609 libraries are searched in :file:`{prefix}/lib/python{version}` and 610 :file:`{exec_prefix}/lib/python{version}`, where :file:`{prefix}` and 611 :file:`{exec_prefix}` are installation-dependent directories, both defaulting 612 to :file:`/usr/local`. 613 614 When :envvar:`PYTHONHOME` is set to a single directory, its value replaces 615 both :file:`{prefix}` and :file:`{exec_prefix}`. To specify different values 616 for these, set :envvar:`PYTHONHOME` to :file:`{prefix}:{exec_prefix}`. 617 618 619.. envvar:: PYTHONPATH 620 621 Augment the default search path for module files. The format is the same as 622 the shell's :envvar:`PATH`: one or more directory pathnames separated by 623 :data:`os.pathsep` (e.g. colons on Unix or semicolons on Windows). 624 Non-existent directories are silently ignored. 625 626 In addition to normal directories, individual :envvar:`PYTHONPATH` entries 627 may refer to zipfiles containing pure Python modules (in either source or 628 compiled form). Extension modules cannot be imported from zipfiles. 629 630 The default search path is installation dependent, but generally begins with 631 :file:`{prefix}/lib/python{version}` (see :envvar:`PYTHONHOME` above). It 632 is *always* appended to :envvar:`PYTHONPATH`. 633 634 An additional directory will be inserted in the search path in front of 635 :envvar:`PYTHONPATH` as described above under 636 :ref:`using-on-interface-options`. The search path can be manipulated from 637 within a Python program as the variable :data:`sys.path`. 638 639 640.. envvar:: PYTHONSAFEPATH 641 642 If this is set to a non-empty string, don't prepend a potentially unsafe 643 path to :data:`sys.path`: see the :option:`-P` option for details. 644 645 .. versionadded:: 3.11 646 647 648.. envvar:: PYTHONPLATLIBDIR 649 650 If this is set to a non-empty string, it overrides the :data:`sys.platlibdir` 651 value. 652 653 .. versionadded:: 3.9 654 655 656.. envvar:: PYTHONSTARTUP 657 658 If this is the name of a readable file, the Python commands in that file are 659 executed before the first prompt is displayed in interactive mode. The file 660 is executed in the same namespace where interactive commands are executed so 661 that objects defined or imported in it can be used without qualification in 662 the interactive session. You can also change the prompts :data:`sys.ps1` and 663 :data:`sys.ps2` and the hook :data:`sys.__interactivehook__` in this file. 664 665 .. audit-event:: cpython.run_startup filename envvar-PYTHONSTARTUP 666 667 Raises an :ref:`auditing event <auditing>` ``cpython.run_startup`` with 668 the filename as the argument when called on startup. 669 670 671.. envvar:: PYTHONOPTIMIZE 672 673 If this is set to a non-empty string it is equivalent to specifying the 674 :option:`-O` option. If set to an integer, it is equivalent to specifying 675 :option:`-O` multiple times. 676 677 678.. envvar:: PYTHONBREAKPOINT 679 680 If this is set, it names a callable using dotted-path notation. The module 681 containing the callable will be imported and then the callable will be run 682 by the default implementation of :func:`sys.breakpointhook` which itself is 683 called by built-in :func:`breakpoint`. If not set, or set to the empty 684 string, it is equivalent to the value "pdb.set_trace". Setting this to the 685 string "0" causes the default implementation of :func:`sys.breakpointhook` 686 to do nothing but return immediately. 687 688 .. versionadded:: 3.7 689 690.. envvar:: PYTHONDEBUG 691 692 If this is set to a non-empty string it is equivalent to specifying the 693 :option:`-d` option. If set to an integer, it is equivalent to specifying 694 :option:`-d` multiple times. 695 696 697.. envvar:: PYTHONINSPECT 698 699 If this is set to a non-empty string it is equivalent to specifying the 700 :option:`-i` option. 701 702 This variable can also be modified by Python code using :data:`os.environ` 703 to force inspect mode on program termination. 704 705 706.. envvar:: PYTHONUNBUFFERED 707 708 If this is set to a non-empty string it is equivalent to specifying the 709 :option:`-u` option. 710 711 712.. envvar:: PYTHONVERBOSE 713 714 If this is set to a non-empty string it is equivalent to specifying the 715 :option:`-v` option. If set to an integer, it is equivalent to specifying 716 :option:`-v` multiple times. 717 718 719.. envvar:: PYTHONCASEOK 720 721 If this is set, Python ignores case in :keyword:`import` statements. This 722 only works on Windows and macOS. 723 724 725.. envvar:: PYTHONDONTWRITEBYTECODE 726 727 If this is set to a non-empty string, Python won't try to write ``.pyc`` 728 files on the import of source modules. This is equivalent to 729 specifying the :option:`-B` option. 730 731 732.. envvar:: PYTHONPYCACHEPREFIX 733 734 If this is set, Python will write ``.pyc`` files in a mirror directory tree 735 at this path, instead of in ``__pycache__`` directories within the source 736 tree. This is equivalent to specifying the :option:`-X` 737 ``pycache_prefix=PATH`` option. 738 739 .. versionadded:: 3.8 740 741 742.. envvar:: PYTHONHASHSEED 743 744 If this variable is not set or set to ``random``, a random value is used 745 to seed the hashes of str and bytes objects. 746 747 If :envvar:`PYTHONHASHSEED` is set to an integer value, it is used as a fixed 748 seed for generating the hash() of the types covered by the hash 749 randomization. 750 751 Its purpose is to allow repeatable hashing, such as for selftests for the 752 interpreter itself, or to allow a cluster of python processes to share hash 753 values. 754 755 The integer must be a decimal number in the range [0,4294967295]. Specifying 756 the value 0 will disable hash randomization. 757 758 .. versionadded:: 3.2.3 759 760.. envvar:: PYTHONINTMAXSTRDIGITS 761 762 If this variable is set to an integer, it is used to configure the 763 interpreter's global :ref:`integer string conversion length limitation 764 <int_max_str_digits>`. 765 766 .. versionadded:: 3.11 767 768.. envvar:: PYTHONIOENCODING 769 770 If this is set before running the interpreter, it overrides the encoding used 771 for stdin/stdout/stderr, in the syntax ``encodingname:errorhandler``. Both 772 the ``encodingname`` and the ``:errorhandler`` parts are optional and have 773 the same meaning as in :func:`str.encode`. 774 775 For stderr, the ``:errorhandler`` part is ignored; the handler will always be 776 ``'backslashreplace'``. 777 778 .. versionchanged:: 3.4 779 The ``encodingname`` part is now optional. 780 781 .. versionchanged:: 3.6 782 On Windows, the encoding specified by this variable is ignored for interactive 783 console buffers unless :envvar:`PYTHONLEGACYWINDOWSSTDIO` is also specified. 784 Files and pipes redirected through the standard streams are not affected. 785 786.. envvar:: PYTHONNOUSERSITE 787 788 If this is set, Python won't add the :data:`user site-packages directory 789 <site.USER_SITE>` to :data:`sys.path`. 790 791 .. seealso:: 792 793 :pep:`370` -- Per user site-packages directory 794 795 796.. envvar:: PYTHONUSERBASE 797 798 Defines the :data:`user base directory <site.USER_BASE>`, which is used to 799 compute the path of the :data:`user site-packages directory <site.USER_SITE>` 800 and :ref:`Distutils installation paths <inst-alt-install-user>` for 801 ``python setup.py install --user``. 802 803 .. seealso:: 804 805 :pep:`370` -- Per user site-packages directory 806 807 808.. envvar:: PYTHONEXECUTABLE 809 810 If this environment variable is set, ``sys.argv[0]`` will be set to its 811 value instead of the value got through the C runtime. Only works on 812 macOS. 813 814.. envvar:: PYTHONWARNINGS 815 816 This is equivalent to the :option:`-W` option. If set to a comma 817 separated string, it is equivalent to specifying :option:`-W` multiple 818 times, with filters later in the list taking precedence over those earlier 819 in the list. 820 821 The simplest settings apply a particular action unconditionally to all 822 warnings emitted by a process (even those that are otherwise ignored by 823 default):: 824 825 PYTHONWARNINGS=default # Warn once per call location 826 PYTHONWARNINGS=error # Convert to exceptions 827 PYTHONWARNINGS=always # Warn every time 828 PYTHONWARNINGS=module # Warn once per calling module 829 PYTHONWARNINGS=once # Warn once per Python process 830 PYTHONWARNINGS=ignore # Never warn 831 832 See :ref:`warning-filter` and :ref:`describing-warning-filters` for more 833 details. 834 835 836.. envvar:: PYTHONFAULTHANDLER 837 838 If this environment variable is set to a non-empty string, 839 :func:`faulthandler.enable` is called at startup: install a handler for 840 :const:`SIGSEGV`, :const:`SIGFPE`, :const:`SIGABRT`, :const:`SIGBUS` and 841 :const:`SIGILL` signals to dump the Python traceback. This is equivalent to 842 :option:`-X` ``faulthandler`` option. 843 844 .. versionadded:: 3.3 845 846 847.. envvar:: PYTHONTRACEMALLOC 848 849 If this environment variable is set to a non-empty string, start tracing 850 Python memory allocations using the :mod:`tracemalloc` module. The value of 851 the variable is the maximum number of frames stored in a traceback of a 852 trace. For example, ``PYTHONTRACEMALLOC=1`` stores only the most recent 853 frame. 854 See the :func:`tracemalloc.start` function for more information. 855 This is equivalent to setting the :option:`-X` ``tracemalloc`` option. 856 857 .. versionadded:: 3.4 858 859 860.. envvar:: PYTHONPROFILEIMPORTTIME 861 862 If this environment variable is set to a non-empty string, Python will 863 show how long each import takes. 864 This is equivalent to setting the :option:`-X` ``importtime`` option. 865 866 .. versionadded:: 3.7 867 868 869.. envvar:: PYTHONASYNCIODEBUG 870 871 If this environment variable is set to a non-empty string, enable the 872 :ref:`debug mode <asyncio-debug-mode>` of the :mod:`asyncio` module. 873 874 .. versionadded:: 3.4 875 876 877.. envvar:: PYTHONMALLOC 878 879 Set the Python memory allocators and/or install debug hooks. 880 881 Set the family of memory allocators used by Python: 882 883 * ``default``: use the :ref:`default memory allocators 884 <default-memory-allocators>`. 885 * ``malloc``: use the :c:func:`malloc` function of the C library 886 for all domains (:c:data:`PYMEM_DOMAIN_RAW`, :c:data:`PYMEM_DOMAIN_MEM`, 887 :c:data:`PYMEM_DOMAIN_OBJ`). 888 * ``pymalloc``: use the :ref:`pymalloc allocator <pymalloc>` for 889 :c:data:`PYMEM_DOMAIN_MEM` and :c:data:`PYMEM_DOMAIN_OBJ` domains and use 890 the :c:func:`malloc` function for the :c:data:`PYMEM_DOMAIN_RAW` domain. 891 892 Install :ref:`debug hooks <pymem-debug-hooks>`: 893 894 * ``debug``: install debug hooks on top of the :ref:`default memory 895 allocators <default-memory-allocators>`. 896 * ``malloc_debug``: same as ``malloc`` but also install debug hooks. 897 * ``pymalloc_debug``: same as ``pymalloc`` but also install debug hooks. 898 899 .. versionchanged:: 3.7 900 Added the ``"default"`` allocator. 901 902 .. versionadded:: 3.6 903 904 905.. envvar:: PYTHONMALLOCSTATS 906 907 If set to a non-empty string, Python will print statistics of the 908 :ref:`pymalloc memory allocator <pymalloc>` every time a new pymalloc object 909 arena is created, and on shutdown. 910 911 This variable is ignored if the :envvar:`PYTHONMALLOC` environment variable 912 is used to force the :c:func:`malloc` allocator of the C library, or if 913 Python is configured without ``pymalloc`` support. 914 915 .. versionchanged:: 3.6 916 This variable can now also be used on Python compiled in release mode. 917 It now has no effect if set to an empty string. 918 919 920.. envvar:: PYTHONLEGACYWINDOWSFSENCODING 921 922 If set to a non-empty string, the default :term:`filesystem encoding and 923 error handler` mode will revert to their pre-3.6 values of 'mbcs' and 924 'replace', respectively. Otherwise, the new defaults 'utf-8' and 925 'surrogatepass' are used. 926 927 This may also be enabled at runtime with 928 :func:`sys._enablelegacywindowsfsencoding()`. 929 930 .. availability:: Windows. 931 932 .. versionadded:: 3.6 933 See :pep:`529` for more details. 934 935.. envvar:: PYTHONLEGACYWINDOWSSTDIO 936 937 If set to a non-empty string, does not use the new console reader and 938 writer. This means that Unicode characters will be encoded according to 939 the active console code page, rather than using utf-8. 940 941 This variable is ignored if the standard streams are redirected (to files 942 or pipes) rather than referring to console buffers. 943 944 .. availability:: Windows. 945 946 .. versionadded:: 3.6 947 948 949.. envvar:: PYTHONCOERCECLOCALE 950 951 If set to the value ``0``, causes the main Python command line application 952 to skip coercing the legacy ASCII-based C and POSIX locales to a more 953 capable UTF-8 based alternative. 954 955 If this variable is *not* set (or is set to a value other than ``0``), the 956 ``LC_ALL`` locale override environment variable is also not set, and the 957 current locale reported for the ``LC_CTYPE`` category is either the default 958 ``C`` locale, or else the explicitly ASCII-based ``POSIX`` locale, then the 959 Python CLI will attempt to configure the following locales for the 960 ``LC_CTYPE`` category in the order listed before loading the interpreter 961 runtime: 962 963 * ``C.UTF-8`` 964 * ``C.utf8`` 965 * ``UTF-8`` 966 967 If setting one of these locale categories succeeds, then the ``LC_CTYPE`` 968 environment variable will also be set accordingly in the current process 969 environment before the Python runtime is initialized. This ensures that in 970 addition to being seen by both the interpreter itself and other locale-aware 971 components running in the same process (such as the GNU ``readline`` 972 library), the updated setting is also seen in subprocesses (regardless of 973 whether or not those processes are running a Python interpreter), as well as 974 in operations that query the environment rather than the current C locale 975 (such as Python's own :func:`locale.getdefaultlocale`). 976 977 Configuring one of these locales (either explicitly or via the above 978 implicit locale coercion) automatically enables the ``surrogateescape`` 979 :ref:`error handler <error-handlers>` for :data:`sys.stdin` and 980 :data:`sys.stdout` (:data:`sys.stderr` continues to use ``backslashreplace`` 981 as it does in any other locale). This stream handling behavior can be 982 overridden using :envvar:`PYTHONIOENCODING` as usual. 983 984 For debugging purposes, setting ``PYTHONCOERCECLOCALE=warn`` will cause 985 Python to emit warning messages on ``stderr`` if either the locale coercion 986 activates, or else if a locale that *would* have triggered coercion is 987 still active when the Python runtime is initialized. 988 989 Also note that even when locale coercion is disabled, or when it fails to 990 find a suitable target locale, :envvar:`PYTHONUTF8` will still activate by 991 default in legacy ASCII-based locales. Both features must be disabled in 992 order to force the interpreter to use ``ASCII`` instead of ``UTF-8`` for 993 system interfaces. 994 995 .. availability:: Unix. 996 997 .. versionadded:: 3.7 998 See :pep:`538` for more details. 999 1000 1001.. envvar:: PYTHONDEVMODE 1002 1003 If this environment variable is set to a non-empty string, enable 1004 :ref:`Python Development Mode <devmode>`, introducing additional runtime 1005 checks that are too expensive to be enabled by default. 1006 This is equivalent to setting the :option:`-X` ``dev`` option. 1007 1008 .. versionadded:: 3.7 1009 1010.. envvar:: PYTHONUTF8 1011 1012 If set to ``1``, enable the :ref:`Python UTF-8 Mode <utf8-mode>`. 1013 1014 If set to ``0``, disable the :ref:`Python UTF-8 Mode <utf8-mode>`. 1015 1016 Setting any other non-empty string causes an error during interpreter 1017 initialisation. 1018 1019 .. versionadded:: 3.7 1020 1021.. envvar:: PYTHONWARNDEFAULTENCODING 1022 1023 If this environment variable is set to a non-empty string, issue a 1024 :class:`EncodingWarning` when the locale-specific default encoding is used. 1025 1026 See :ref:`io-encoding-warning` for details. 1027 1028 .. versionadded:: 3.10 1029 1030.. envvar:: PYTHONNODEBUGRANGES 1031 1032 If this variable is set, it disables the inclusion of the tables mapping 1033 extra location information (end line, start column offset and end column 1034 offset) to every instruction in code objects. This is useful when smaller 1035 code objects and pyc files are desired as well as suppressing the extra visual 1036 location indicators when the interpreter displays tracebacks. 1037 1038 .. versionadded:: 3.11 1039 1040 1041 1042Debug-mode variables 1043~~~~~~~~~~~~~~~~~~~~ 1044 1045.. envvar:: PYTHONTHREADDEBUG 1046 1047 If set, Python will print threading debug info into stdout. 1048 1049 Need a :ref:`debug build of Python <debug-build>`. 1050 1051 .. deprecated-removed:: 3.10 3.12 1052 1053 1054.. envvar:: PYTHONDUMPREFS 1055 1056 If set, Python will dump objects and reference counts still alive after 1057 shutting down the interpreter. 1058 1059 Need Python configured with the :option:`--with-trace-refs` build option. 1060 1061.. envvar:: PYTHONDUMPREFSFILE=FILENAME 1062 1063 If set, Python will dump objects and reference counts still alive 1064 after shutting down the interpreter into a file called *FILENAME*. 1065 1066 Need Python configured with the :option:`--with-trace-refs` build option. 1067 1068 .. versionadded:: 3.11 1069