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