blob: 3481d5ba6f0a4bbd39a5c9e2dad41e0642f38f20 [file] [log] [blame]
Georg Brandl3c8ce772007-11-01 20:58:08 +00001.. highlightlang:: none
2
Christian Heimesd8654cf2007-12-02 15:22:16 +00003.. _using-on-general:
4
Georg Brandl3c8ce772007-11-01 20:58:08 +00005Command line and environment
6============================
7
8The CPython interpreter scans the command line and the environment for various
9settings.
10
Georg Brandl48310cd2009-01-03 21:18:54 +000011.. note::
12
Christian Heimescbf3b5c2007-12-03 21:02:03 +000013 Other implementations' command line schemes may differ. See
Georg Brandl3c8ce772007-11-01 20:58:08 +000014 :ref:`implementations` for further resources.
15
16
Christian Heimesd8654cf2007-12-02 15:22:16 +000017.. _using-on-cmdline:
18
Georg Brandl3c8ce772007-11-01 20:58:08 +000019Command line
20------------
21
22When invoking Python, you may specify any of these options::
23
Christian Heimes8dc226f2008-05-06 23:45:46 +000024 python [-bdEiOsStuUvxX?] [-c command | -m module-name | script | - ] [args]
Georg Brandl3c8ce772007-11-01 20:58:08 +000025
26The most common use case is, of course, a simple invocation of a script::
27
28 python myscript.py
29
30
Christian Heimes81ee3ef2008-05-04 22:42:01 +000031.. _using-on-interface-options:
32
Georg Brandl3c8ce772007-11-01 20:58:08 +000033Interface options
34~~~~~~~~~~~~~~~~~
35
Christian Heimes81ee3ef2008-05-04 22:42:01 +000036The interpreter interface resembles that of the UNIX shell, but provides some
37additional methods of invocation:
Georg Brandl3c8ce772007-11-01 20:58:08 +000038
39* When called with standard input connected to a tty device, it prompts for
40 commands and executes them until an EOF (an end-of-file character, you can
41 produce that with *Ctrl-D* on UNIX or *Ctrl-Z, Enter* on Windows) is read.
42* When called with a file name argument or with a file as standard input, it
43 reads and executes a script from that file.
Christian Heimes81ee3ef2008-05-04 22:42:01 +000044* When called with a directory name argument, it reads and executes an
45 appropriately named script from that directory.
Georg Brandl3c8ce772007-11-01 20:58:08 +000046* When called with ``-c command``, it executes the Python statement(s) given as
47 *command*. Here *command* may contain multiple statements separated by
48 newlines. Leading whitespace is significant in Python statements!
Christian Heimes81ee3ef2008-05-04 22:42:01 +000049* When called with ``-m module-name``, the given module is located on the
Georg Brandl3c8ce772007-11-01 20:58:08 +000050 Python module path and executed as a script.
51
52In non-interactive mode, the entire input is parsed before it is executed.
53
54An interface option terminates the list of options consumed by the interpreter,
55all consecutive arguments will end up in :data:`sys.argv` -- note that the first
56element, subscript zero (``sys.argv[0]``), is a string reflecting the program's
57source.
58
59.. cmdoption:: -c <command>
60
61 Execute the Python code in *command*. *command* can be one ore more
62 statements separated by newlines, with significant leading whitespace as in
63 normal module code.
Georg Brandl48310cd2009-01-03 21:18:54 +000064
Georg Brandl3c8ce772007-11-01 20:58:08 +000065 If this option is given, the first element of :data:`sys.argv` will be
Christian Heimes81ee3ef2008-05-04 22:42:01 +000066 ``"-c"`` and the current directory will be added to the start of
67 :data:`sys.path` (allowing modules in that directory to be imported as top
68 level modules).
Georg Brandl3c8ce772007-11-01 20:58:08 +000069
70
71.. cmdoption:: -m <module-name>
72
Christian Heimes81ee3ef2008-05-04 22:42:01 +000073 Search :data:`sys.path` for the named module and execute its contents as
74 the :mod:`__main__` module.
Georg Brandl48310cd2009-01-03 21:18:54 +000075
Georg Brandl3c8ce772007-11-01 20:58:08 +000076 Since the argument is a *module* name, you must not give a file extension
Christian Heimes81ee3ef2008-05-04 22:42:01 +000077 (``.py``). The ``module-name`` should be a valid Python module name, but
78 the implementation may not always enforce this (e.g. it may allow you to
79 use a name that includes a hyphen).
Georg Brandl3c8ce772007-11-01 20:58:08 +000080
81 .. note::
82
83 This option cannot be used with builtin modules and extension modules
Christian Heimes81ee3ef2008-05-04 22:42:01 +000084 written in C, since they do not have Python module files. However, it
85 can still be used for precompiled modules, even if the original source
86 file is not available.
Georg Brandl48310cd2009-01-03 21:18:54 +000087
Georg Brandl3c8ce772007-11-01 20:58:08 +000088 If this option is given, the first element of :data:`sys.argv` will be the
Christian Heimes81ee3ef2008-05-04 22:42:01 +000089 full path to the module file. As with the :option:`-c` option, the current
90 directory will be added to the start of :data:`sys.path`.
Georg Brandl48310cd2009-01-03 21:18:54 +000091
Georg Brandl3c8ce772007-11-01 20:58:08 +000092 Many standard library modules contain code that is invoked on their execution
93 as a script. An example is the :mod:`timeit` module::
94
95 python -mtimeit -s 'setup here' 'benchmarked code here'
96 python -mtimeit -h # for details
97
Georg Brandl48310cd2009-01-03 21:18:54 +000098 .. seealso::
Georg Brandl3c8ce772007-11-01 20:58:08 +000099 :func:`runpy.run_module`
100 The actual implementation of this feature.
101
102 :pep:`338` -- Executing modules as scripts
103
104
Georg Brandl3c8ce772007-11-01 20:58:08 +0000105.. describe:: -
106
107 Read commands from standard input (:data:`sys.stdin`). If standard input is
108 a terminal, :option:`-i` is implied.
109
110 If this option is given, the first element of :data:`sys.argv` will be
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000111 ``"-"`` and the current directory will be added to the start of
112 :data:`sys.path`.
113
114
115.. describe:: <script>
116
117 Execute the Python code contained in *script*, which must be a filesystem
118 path (absolute or relative) referring to either a Python file, a directory
119 containing a ``__main__.py`` file, or a zipfile containing a
120 ``__main__.py`` file.
121
122 If this option is given, the first element of :data:`sys.argv` will be the
123 script name as given on the command line.
124
125 If the script name refers directly to a Python file, the directory
126 containing that file is added to the start of :data:`sys.path`, and the
127 file is executed as the :mod:`__main__` module.
128
129 If the script name refers to a directory or zipfile, the script name is
130 added to the start of :data:`sys.path` and the ``__main__.py`` file in
131 that location is executed as the :mod:`__main__` module.
132
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000133
134If no interface option is given, :option:`-i` is implied, ``sys.argv[0]`` is
135an empty string (``""``) and the current directory will be added to the
136start of :data:`sys.path`.
Georg Brandl3c8ce772007-11-01 20:58:08 +0000137
Georg Brandla971c652008-11-07 09:39:56 +0000138.. seealso:: :ref:`tut-invoking`
139
Georg Brandl3c8ce772007-11-01 20:58:08 +0000140
Georg Brandl3c8ce772007-11-01 20:58:08 +0000141Generic options
142~~~~~~~~~~~~~~~
143
144.. cmdoption:: -?
145 -h
146 --help
147
148 Print a short description of all command line options.
149
150
151.. cmdoption:: -V
152 --version
153
154 Print the Python version number and exit. Example output could be::
Georg Brandl48310cd2009-01-03 21:18:54 +0000155
Georg Brandle6bcc912008-05-12 18:05:20 +0000156 Python 3.0
Georg Brandl3c8ce772007-11-01 20:58:08 +0000157
158
159Miscellaneous options
160~~~~~~~~~~~~~~~~~~~~~
161
Christian Heimes226679a2007-12-07 11:52:55 +0000162.. cmdoption:: -b
163
164 Issue a warning when comparing str and bytes. Issue an error when the
165 option is given twice (:option:`-bb`).
166
167
Christian Heimes790c8232008-01-07 21:14:23 +0000168.. cmdoption:: -B
169
170 If given, Python won't try to write ``.pyc`` or ``.pyo`` files on the
171 import of source modules. See also :envvar:`PYTHONDONTWRITEBYTECODE`.
172
Christian Heimes790c8232008-01-07 21:14:23 +0000173
Georg Brandl3c8ce772007-11-01 20:58:08 +0000174.. cmdoption:: -d
175
176 Turn on parser debugging output (for wizards only, depending on compilation
177 options). See also :envvar:`PYTHONDEBUG`.
178
179
180.. cmdoption:: -E
181
182 Ignore all :envvar:`PYTHON*` environment variables, e.g.
183 :envvar:`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set.
184
185
186.. cmdoption:: -i
187
188 When a script is passed as first argument or the :option:`-c` option is used,
189 enter interactive mode after executing the script or the command, even when
190 :data:`sys.stdin` does not appear to be a terminal. The
191 :envvar:`PYTHONSTARTUP` file is not read.
Georg Brandl48310cd2009-01-03 21:18:54 +0000192
Georg Brandl3c8ce772007-11-01 20:58:08 +0000193 This can be useful to inspect global variables or a stack trace when a script
194 raises an exception. See also :envvar:`PYTHONINSPECT`.
195
196
197.. cmdoption:: -O
198
199 Turn on basic optimizations. This changes the filename extension for
200 compiled (:term:`bytecode`) files from ``.pyc`` to ``.pyo``. See also
201 :envvar:`PYTHONOPTIMIZE`.
202
203
204.. cmdoption:: -OO
205
206 Discard docstrings in addition to the :option:`-O` optimizations.
207
208
Christian Heimes8dc226f2008-05-06 23:45:46 +0000209.. cmdoption:: -s
210
211 Don't add user site directory to sys.path
212
Christian Heimes8dc226f2008-05-06 23:45:46 +0000213 .. seealso::
214
215 :pep:`370` -- Per user site-packages directory
216
217
218.. cmdoption:: -S
219
Georg Brandl3c8ce772007-11-01 20:58:08 +0000220 Disable the import of the module :mod:`site` and the site-dependent
221 manipulations of :data:`sys.path` that it entails.
222
223
Georg Brandl3c8ce772007-11-01 20:58:08 +0000224.. cmdoption:: -u
Georg Brandl48310cd2009-01-03 21:18:54 +0000225
Georg Brandl3c8ce772007-11-01 20:58:08 +0000226 Force stdin, stdout and stderr to be totally unbuffered. On systems where it
227 matters, also put stdin, stdout and stderr in binary mode.
Georg Brandl48310cd2009-01-03 21:18:54 +0000228
Georg Brandl3c8ce772007-11-01 20:58:08 +0000229 Note that there is internal buffering in :meth:`file.readlines` and
230 :ref:`bltin-file-objects` (``for line in sys.stdin``) which is not influenced
231 by this option. To work around this, you will want to use
232 :meth:`file.readline` inside a ``while 1:`` loop.
233
234 See also :envvar:`PYTHONUNBUFFERED`.
235
236
237.. XXX should the -U option be documented?
238
239.. cmdoption:: -v
Georg Brandl48310cd2009-01-03 21:18:54 +0000240
Georg Brandl3c8ce772007-11-01 20:58:08 +0000241 Print a message each time a module is initialized, showing the place
242 (filename or built-in module) from which it is loaded. When given twice
243 (:option:`-vv`), print a message for each file that is checked for when
244 searching for a module. Also provides information on module cleanup at exit.
245 See also :envvar:`PYTHONVERBOSE`.
246
247
248.. cmdoption:: -W arg
Georg Brandl48310cd2009-01-03 21:18:54 +0000249
Georg Brandl3c8ce772007-11-01 20:58:08 +0000250 Warning control. Python's warning machinery by default prints warning
251 messages to :data:`sys.stderr`. A typical warning message has the following
252 form::
253
254 file:line: category: message
Georg Brandl48310cd2009-01-03 21:18:54 +0000255
Georg Brandl3c8ce772007-11-01 20:58:08 +0000256 By default, each warning is printed once for each source line where it
257 occurs. This option controls how often warnings are printed.
258
259 Multiple :option:`-W` options may be given; when a warning matches more than
260 one option, the action for the last matching option is performed. Invalid
261 :option:`-W` options are ignored (though, a warning message is printed about
262 invalid options when the first warning is issued).
Georg Brandl48310cd2009-01-03 21:18:54 +0000263
Georg Brandl3c8ce772007-11-01 20:58:08 +0000264 Warnings can also be controlled from within a Python program using the
265 :mod:`warnings` module.
266
267 The simplest form of argument is one of the following action strings (or a
268 unique abbreviation):
Georg Brandl48310cd2009-01-03 21:18:54 +0000269
Georg Brandl3c8ce772007-11-01 20:58:08 +0000270 ``ignore``
271 Ignore all warnings.
272 ``default``
273 Explicitly request the default behavior (printing each warning once per
274 source line).
275 ``all``
276 Print a warning each time it occurs (this may generate many messages if a
277 warning is triggered repeatedly for the same source line, such as inside a
278 loop).
279 ``module``
280 Print each warning only only the first time it occurs in each module.
281 ``once``
282 Print each warning only the first time it occurs in the program.
283 ``error``
284 Raise an exception instead of printing a warning message.
Georg Brandl48310cd2009-01-03 21:18:54 +0000285
286 The full form of argument is::
287
Georg Brandl3c8ce772007-11-01 20:58:08 +0000288 action:message:category:module:line
289
290 Here, *action* is as explained above but only applies to messages that match
291 the remaining fields. Empty fields match all values; trailing empty fields
292 may be omitted. The *message* field matches the start of the warning message
293 printed; this match is case-insensitive. The *category* field matches the
294 warning category. This must be a class name; the match test whether the
295 actual warning category of the message is a subclass of the specified warning
296 category. The full class name must be given. The *module* field matches the
297 (fully-qualified) module name; this match is case-sensitive. The *line*
298 field matches the line number, where zero matches all line numbers and is
299 thus equivalent to an omitted line number.
300
301 .. seealso::
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000302 :mod:`warnings` -- the warnings module
Georg Brandl3c8ce772007-11-01 20:58:08 +0000303
304 :pep:`230` -- Warning framework
305
306
307.. cmdoption:: -x
Georg Brandl48310cd2009-01-03 21:18:54 +0000308
Georg Brandl3c8ce772007-11-01 20:58:08 +0000309 Skip the first line of the source, allowing use of non-Unix forms of
310 ``#!cmd``. This is intended for a DOS specific hack only.
Georg Brandl48310cd2009-01-03 21:18:54 +0000311
Georg Brandl3c8ce772007-11-01 20:58:08 +0000312 .. warning:: The line numbers in error messages will be off by one!
313
Christian Heimesd8654cf2007-12-02 15:22:16 +0000314.. _using-on-envvars:
Georg Brandl3c8ce772007-11-01 20:58:08 +0000315
316Environment variables
317---------------------
318
Christian Heimes790c8232008-01-07 21:14:23 +0000319These environment variables influence Python's behavior.
320
Georg Brandl3c8ce772007-11-01 20:58:08 +0000321.. envvar:: PYTHONHOME
Georg Brandl48310cd2009-01-03 21:18:54 +0000322
Georg Brandl3c8ce772007-11-01 20:58:08 +0000323 Change the location of the standard Python libraries. By default, the
Christian Heimese1c98112008-01-21 11:20:28 +0000324 libraries are searched in :file:`{prefix}/lib/python{version}` and
325 :file:`{exec_prefix}/lib/python{version}`, where :file:`{prefix}` and
Georg Brandl3c8ce772007-11-01 20:58:08 +0000326 :file:`{exec_prefix}` are installation-dependent directories, both defaulting
327 to :file:`/usr/local`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000328
Georg Brandl3c8ce772007-11-01 20:58:08 +0000329 When :envvar:`PYTHONHOME` is set to a single directory, its value replaces
330 both :file:`{prefix}` and :file:`{exec_prefix}`. To specify different values
Christian Heimese1c98112008-01-21 11:20:28 +0000331 for these, set :envvar:`PYTHONHOME` to :file:`{prefix}:{exec_prefix}`.
Georg Brandl3c8ce772007-11-01 20:58:08 +0000332
333
334.. envvar:: PYTHONPATH
335
Christian Heimes790c8232008-01-07 21:14:23 +0000336 Augment the default search path for module files. The format is the same as
Georg Brandl3c8ce772007-11-01 20:58:08 +0000337 the shell's :envvar:`PATH`: one or more directory pathnames separated by
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000338 :data:`os.pathsep` (e.g. colons on Unix or semicolons on Windows).
339 Non-existent directories are silently ignored.
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000340
341 In addition to normal directories, individual :envvar:`PYTHONPATH` entries
342 may refer to zipfiles containing pure Python modules (in either source or
343 compiled form). Extension modules cannot be imported from zipfiles.
Georg Brandl48310cd2009-01-03 21:18:54 +0000344
Georg Brandl3c8ce772007-11-01 20:58:08 +0000345 The default search path is installation dependent, but generally begins with
Georg Brandl1f01deb2009-01-03 22:47:39 +0000346 :file:`{prefix}/lib/python{version}` (see :envvar:`PYTHONHOME` above). It
Georg Brandl3c8ce772007-11-01 20:58:08 +0000347 is *always* appended to :envvar:`PYTHONPATH`.
Georg Brandl48310cd2009-01-03 21:18:54 +0000348
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000349 An additional directory will be inserted in the search path in front of
350 :envvar:`PYTHONPATH` as described above under
351 :ref:`using-on-interface-options`. The search path can be manipulated from
352 within a Python program as the variable :data:`sys.path`.
Georg Brandl3c8ce772007-11-01 20:58:08 +0000353
354
355.. envvar:: PYTHONSTARTUP
Georg Brandl48310cd2009-01-03 21:18:54 +0000356
Georg Brandl3c8ce772007-11-01 20:58:08 +0000357 If this is the name of a readable file, the Python commands in that file are
358 executed before the first prompt is displayed in interactive mode. The file
359 is executed in the same namespace where interactive commands are executed so
360 that objects defined or imported in it can be used without qualification in
361 the interactive session. You can also change the prompts :data:`sys.ps1` and
362 :data:`sys.ps2` in this file.
363
364
365.. envvar:: PYTHONY2K
Georg Brandl48310cd2009-01-03 21:18:54 +0000366
Georg Brandl3c8ce772007-11-01 20:58:08 +0000367 Set this to a non-empty string to cause the :mod:`time` module to require
368 dates specified as strings to include 4-digit years, otherwise 2-digit years
369 are converted based on rules described in the :mod:`time` module
370 documentation.
371
372
373.. envvar:: PYTHONOPTIMIZE
Georg Brandl48310cd2009-01-03 21:18:54 +0000374
Georg Brandl3c8ce772007-11-01 20:58:08 +0000375 If this is set to a non-empty string it is equivalent to specifying the
376 :option:`-O` option. If set to an integer, it is equivalent to specifying
377 :option:`-O` multiple times.
378
379
380.. envvar:: PYTHONDEBUG
Georg Brandl48310cd2009-01-03 21:18:54 +0000381
Georg Brandl3c8ce772007-11-01 20:58:08 +0000382 If this is set to a non-empty string it is equivalent to specifying the
383 :option:`-d` option. If set to an integer, it is equivalent to specifying
384 :option:`-d` multiple times.
385
386
387.. envvar:: PYTHONINSPECT
Georg Brandl48310cd2009-01-03 21:18:54 +0000388
Georg Brandl3c8ce772007-11-01 20:58:08 +0000389 If this is set to a non-empty string it is equivalent to specifying the
390 :option:`-i` option.
391
Christian Heimes790c8232008-01-07 21:14:23 +0000392 This variable can also be modified by Python code using :data:`os.environ`
393 to force inspect mode on program termination.
394
Georg Brandl3c8ce772007-11-01 20:58:08 +0000395
396.. envvar:: PYTHONUNBUFFERED
Georg Brandl48310cd2009-01-03 21:18:54 +0000397
Georg Brandl3c8ce772007-11-01 20:58:08 +0000398 If this is set to a non-empty string it is equivalent to specifying the
399 :option:`-u` option.
400
401
402.. envvar:: PYTHONVERBOSE
Georg Brandl48310cd2009-01-03 21:18:54 +0000403
Georg Brandl3c8ce772007-11-01 20:58:08 +0000404 If this is set to a non-empty string it is equivalent to specifying the
405 :option:`-v` option. If set to an integer, it is equivalent to specifying
406 :option:`-v` multiple times.
407
408
409.. envvar:: PYTHONCASEOK
Georg Brandl48310cd2009-01-03 21:18:54 +0000410
Georg Brandl3c8ce772007-11-01 20:58:08 +0000411 If this is set, Python ignores case in :keyword:`import` statements. This
412 only works on Windows.
413
Christian Heimes790c8232008-01-07 21:14:23 +0000414
415.. envvar:: PYTHONDONTWRITEBYTECODE
416
417 If this is set, Python won't try to write ``.pyc`` or ``.pyo`` files on the
418 import of source modules.
419
Christian Heimes790c8232008-01-07 21:14:23 +0000420
Georg Brandl2c906f12008-06-11 18:03:09 +0000421.. envvar:: PYTHONIOENCODING
422
423 Overrides the encoding used for stdin/stdout/stderr, in the syntax
424 ``encodingname:errorhandler``. The ``:errorhandler`` part is optional and
425 has the same meaning as in :func:`str.encode`.
426
Georg Brandl559e5d72008-06-11 18:37:52 +0000427 For stderr, the ``:errorhandler`` part is ignored; the handler will always be
428 ``'backslashreplace'``.
429
Georg Brandl2c906f12008-06-11 18:03:09 +0000430
Christian Heimes8dc226f2008-05-06 23:45:46 +0000431.. envvar:: PYTHONNOUSERSITE
432
433 If this is set, Python won't add the user site directory to sys.path
434
435 .. seealso::
436
437 :pep:`370` -- Per user site-packages directory
438
439
440.. envvar:: PYTHONUSERBASE
441
442 Sets the base directory for the user site directory
443
444 .. seealso::
445
446 :pep:`370` -- Per user site-packages directory
447
448
Christian Heimes790c8232008-01-07 21:14:23 +0000449.. envvar:: PYTHONEXECUTABLE
450
451 If this environment variable is set, ``sys.argv[0]`` will be set to its
452 value instead of the value got through the C runtime. Only works on
Georg Brandlc575c902008-09-13 17:46:05 +0000453 Mac OS X.
Christian Heimes790c8232008-01-07 21:14:23 +0000454
455
456Debug-mode variables
457~~~~~~~~~~~~~~~~~~~~
458
459Setting these variables only has an effect in a debug build of Python, that is,
460if Python was configured with the :option:`--with-pydebug` build option.
461
462.. envvar:: PYTHONTHREADDEBUG
463
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000464 If set, Python will print threading debug info.
Christian Heimes790c8232008-01-07 21:14:23 +0000465
Christian Heimes790c8232008-01-07 21:14:23 +0000466
467.. envvar:: PYTHONDUMPREFS
468
469 If set, Python will dump objects and reference counts still alive after
470 shutting down the interpreter.
471
472
473.. envvar:: PYTHONMALLOCSTATS
474
475 If set, Python will print memory allocation statistics every time a new
476 object arena is created, and on shutdown.
477