1 .. highlightlang:: sh 2 3 .. ATTENTION: You probably should update Misc/python.man, too, if you modify 4 this file. 5 6 .. _using-on-general: 7 8 Command line and environment 9 ============================ 10 11 The CPython interpreter scans the command line and the environment for various 12 settings. 13 14 .. impl-detail:: 15 16 Other implementations' command line schemes may differ. See 17 :ref:`implementations` for further resources. 18 19 20 .. _using-on-cmdline: 21 22 Command line 23 ------------ 24 25 When invoking Python, you may specify any of these options:: 26 27 python [-bBdEiOQsRStuUvVWxX3?] [-c command | -m module-name | script | - ] [args] 28 29 The most common use case is, of course, a simple invocation of a script:: 30 31 python myscript.py 32 33 34 .. _using-on-interface-options: 35 36 Interface options 37 ~~~~~~~~~~~~~~~~~ 38 39 The interpreter interface resembles that of the UNIX shell, but provides some 40 additional methods of invocation: 41 42 * When called with standard input connected to a tty device, it prompts for 43 commands and executes them until an EOF (an end-of-file character, you can 44 produce that with :kbd:`Ctrl-D` on UNIX or :kbd:`Ctrl-Z, Enter` on Windows) is read. 45 * When called with a file name argument or with a file as standard input, it 46 reads and executes a script from that file. 47 * When called with a directory name argument, it reads and executes an 48 appropriately named script from that directory. 49 * When called with ``-c command``, it executes the Python statement(s) given as 50 *command*. Here *command* may contain multiple statements separated by 51 newlines. Leading whitespace is significant in Python statements! 52 * When called with ``-m module-name``, the given module is located on the 53 Python module path and executed as a script. 54 55 In non-interactive mode, the entire input is parsed before it is executed. 56 57 An interface option terminates the list of options consumed by the interpreter, 58 all consecutive arguments will end up in :data:`sys.argv` -- note that the first 59 element, subscript zero (``sys.argv[0]``), is a string reflecting the program's 60 source. 61 62 .. cmdoption:: -c <command> 63 64 Execute the Python code in *command*. *command* can be one or more 65 statements separated by newlines, with significant leading whitespace as in 66 normal module code. 67 68 If this option is given, the first element of :data:`sys.argv` will be 69 ``"-c"`` and the current directory will be added to the start of 70 :data:`sys.path` (allowing modules in that directory to be imported as top 71 level modules). 72 73 74 .. cmdoption:: -m <module-name> 75 76 Search :data:`sys.path` for the named module and execute its contents as 77 the :mod:`__main__` module. 78 79 Since the argument is a *module* name, you must not give a file extension 80 (``.py``). The ``module-name`` should be a valid Python module name, but 81 the implementation may not always enforce this (e.g. it may allow you to 82 use a name that includes a hyphen). 83 84 Package names are also permitted. When a package name is supplied instead 85 of a normal module, the interpreter will execute ``<pkg>.__main__`` as 86 the main module. This behaviour is deliberately similar to the handling 87 of directories and zipfiles that are passed to the interpreter as the 88 script argument. 89 90 .. note:: 91 92 This option cannot be used with built-in modules and extension modules 93 written in C, since they do not have Python module files. However, it 94 can still be used for precompiled modules, even if the original source 95 file is not available. 96 97 If this option is given, the first element of :data:`sys.argv` will be the 98 full path to the module file. As with the :option:`-c` option, the current 99 directory will be added to the start of :data:`sys.path`. 100 101 Many standard library modules contain code that is invoked on their execution 102 as a script. An example is the :mod:`timeit` module:: 103 104 python -mtimeit -s 'setup here' 'benchmarked code here' 105 python -mtimeit -h # for details 106 107 .. seealso:: 108 :func:`runpy.run_module` 109 Equivalent functionality directly available to Python code 110 111 :pep:`338` -- Executing modules as scripts 112 113 .. versionadded:: 2.4 114 115 .. versionchanged:: 2.5 116 The named module can now be located inside a package. 117 118 .. versionchanged:: 2.7 119 Supply the package name to run a ``__main__`` submodule. 120 sys.argv[0] is now set to ``"-m"`` while searching for the module 121 (it was previously incorrectly set to ``"-c"``) 122 123 124 .. describe:: - 125 126 Read commands from standard input (:data:`sys.stdin`). If standard input is 127 a terminal, :option:`-i` is implied. 128 129 If this option is given, the first element of :data:`sys.argv` will be 130 ``"-"`` and the current directory will be added to the start of 131 :data:`sys.path`. 132 133 .. seealso:: 134 :func:`runpy.run_path` 135 Equivalent functionality directly available to Python code 136 137 138 .. describe:: <script> 139 140 Execute the Python code contained in *script*, which must be a filesystem 141 path (absolute or relative) referring to either a Python file, a directory 142 containing a ``__main__.py`` file, or a zipfile containing a 143 ``__main__.py`` file. 144 145 If this option is given, the first element of :data:`sys.argv` will be the 146 script name as given on the command line. 147 148 If the script name refers directly to a Python file, the directory 149 containing that file is added to the start of :data:`sys.path`, and the 150 file is executed as the :mod:`__main__` module. 151 152 If the script name refers to a directory or zipfile, the script name is 153 added to the start of :data:`sys.path` and the ``__main__.py`` file in 154 that location is executed as the :mod:`__main__` module. 155 156 .. versionchanged:: 2.5 157 Directories and zipfiles containing a ``__main__.py`` file at the top 158 level are now considered valid Python scripts. 159 160 If no interface option is given, :option:`-i` is implied, ``sys.argv[0]`` is 161 an empty string (``""``) and the current directory will be added to the 162 start of :data:`sys.path`. 163 164 .. seealso:: :ref:`tut-invoking` 165 166 167 Generic options 168 ~~~~~~~~~~~~~~~ 169 170 .. cmdoption:: -? 171 -h 172 --help 173 174 Print a short description of all command line options. 175 176 .. versionchanged:: 2.5 177 The ``--help`` variant. 178 179 180 .. cmdoption:: -V 181 --version 182 183 Print the Python version number and exit. Example output could be:: 184 185 Python 2.5.1 186 187 .. versionchanged:: 2.5 188 The ``--version`` variant. 189 190 191 Miscellaneous options 192 ~~~~~~~~~~~~~~~~~~~~~ 193 194 .. cmdoption:: -b 195 196 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 424 Options 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 451 Environment variables 452 --------------------- 453 454 These environment variables influence Python's behavior, they are processed 455 before the command-line switches other than -E. It is customary that 456 command-line switches override environmental variables where there is a 457 conflict. 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 641 Debug-mode variables 642 ~~~~~~~~~~~~~~~~~~~~ 643 644 Setting these variables only has an effect in a debug build of Python, that is, 645 if 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