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