blob: 555803e0c4c5b350247c00a3afa29e19470f1b3d [file] [log] [blame]
Guido van Rossum5fdeeea1994-01-02 01:22:07 +00001\section{Built-in Module \sectcode{sys}}
Guido van Rossume47da0a1997-07-17 16:34:52 +00002\label{module-sys}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +00003
4\bimodindex{sys}
5This module provides access to some variables used or maintained by the
6interpreter and to functions that interact strongly with the interpreter.
7It is always available.
8
9\renewcommand{\indexsubitem}{(in module sys)}
Guido van Rossum470be141995-03-17 16:07:09 +000010
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000011\begin{datadesc}{argv}
12 The list of command line arguments passed to a Python script.
Guido van Rossum470be141995-03-17 16:07:09 +000013 \code{sys.argv[0]} is the script name (it is operating system
14 dependent whether this is a full pathname or not).
15 If the command was executed using the \samp{-c} command line option
16 to the interpreter, \code{sys.argv[0]} is set to the string
17 \code{"-c"}.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000018 If no script name was passed to the Python interpreter,
Guido van Rossum470be141995-03-17 16:07:09 +000019 \code{sys.argv} has zero length.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000020\end{datadesc}
21
22\begin{datadesc}{builtin_module_names}
Guido van Rossum0d2971b1997-01-06 23:01:02 +000023 A tuple of strings giving the names of all modules that are compiled
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000024 into this Python interpreter. (This information is not available in
25 any other way --- \code{sys.modules.keys()} only lists the imported
26 modules.)
27\end{datadesc}
28
Guido van Rossum871cf161997-10-20 22:38:43 +000029\begin{funcdesc}{exc_info}{}
30This function returns a tuple of three values that give information
31about the exception that is currently being handled. The information
32returned is specific both to the current thread and to the current
33stack frame. If the current stack frame is not handling an exception,
34the information is taken from the calling stack frame, or its caller,
35and so on until a stack frame is found that is handling an exception.
36Here, ``handling an exception'' is defined as ``executing or having
37executed an \code{except} clause.'' For any stack frame, only
38information about the most recently handled exception is accessible.
39
40If no exception is being handled anywhere on the stack, a tuple
41containing three \code{None} values is returned. Otherwise, the
42values returned are
43\code{(\var{type}, \var{value}, \var{traceback})}.
44Their meaning is: \var{type} gets the exception type of the exception
45being handled (a string or class object); \var{value} gets the
46exception parameter (its \dfn{associated value} or the second argument
47to \code{raise}, which is always a class instance if the exception
48type is a class object); \var{traceback} gets a traceback object (see
49the Reference Manual) which encapsulates the call stack at the point
50where the exception originally occurred.
51\obindex{traceback}
52
53\strong{Warning:} assigning the \var{traceback} return value to a
54local variable in a function that is handling an exception will cause
55a circular reference. This will prevent anything referenced by a local
56variable in the same function or by the traceback from being garbage
57collected. Since most functions don't need access to the traceback,
58the best solution is to use something like
59\code{type, value = sys.exc_info()[:2]}
60to extract only the exception type and value. If you do need the
61traceback, make sure to delete it after use (best done with a
62\code{try-finally} statement) or to call \code{sys.exc_info()} in a
63function that does not itself handle an exception.
64\end{funcdesc}
65
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000066\begin{datadesc}{exc_type}
67\dataline{exc_value}
68\dataline{exc_traceback}
Guido van Rossum871cf161997-10-20 22:38:43 +000069Use of these three variables is deprecated; they contain the same
70values as returned by \code{sys.exc_info()} above. However, since
71they are global variables, they are not specific to the current
72thread, so their use is not safe in a multi-threaded program. When no
73exception is being handled, \code{sys.exc_type} is set to \code{None}
74and the other two are undefined.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000075\end{datadesc}
76
Guido van Rossum0a3c7531997-06-02 17:32:41 +000077\begin{datadesc}{exec_prefix}
78A string giving the site-specific
79directory prefix where the platform-dependent Python files are
80installed; by default, this is also \code{"/usr/local"}. This can be
81set at build time with the \code{--exec-prefix} argument to the
82\code{configure} script. Specifically, all configuration files
83(e.g. the \code{config.h} header file) are installed in the directory
84\code{sys.exec_prefix+"/lib/python\emph{VER}/config"}, and shared library
85modules are installed in
86\code{sys.exec_prefix+"/lib/python\emph{VER}/sharedmodules"},
87where \emph{VER} is equal to \code{sys.version[:3]}.
88\end{datadesc}
89
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000090\begin{funcdesc}{exit}{n}
91 Exit from Python with numeric exit status \var{n}. This is
92 implemented by raising the \code{SystemExit} exception, so cleanup
93 actions specified by \code{finally} clauses of \code{try} statements
94 are honored, and it is possible to catch the exit attempt at an outer
95 level.
96\end{funcdesc}
97
98\begin{datadesc}{exitfunc}
99 This value is not actually defined by the module, but can be set by
100 the user (or by a program) to specify a clean-up action at program
101 exit. When set, it should be a parameterless function. This function
Guido van Rossum6b686e91995-07-07 23:00:35 +0000102 will be called when the interpreter exits in any way (except when a
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000103 fatal error occurs: in that case the interpreter's internal state
104 cannot be trusted).
105\end{datadesc}
106
107\begin{datadesc}{last_type}
108\dataline{last_value}
109\dataline{last_traceback}
Guido van Rossum871cf161997-10-20 22:38:43 +0000110These three variables are not always defined; they are set when an
111exception is not handled and the interpreter prints an error message
112and a stack traceback. Their intended use is to allow an interactive
113user to import a debugger module and engage in post-mortem debugging
114without having to re-execute the command that caused the error.
115(Typical use is \code{import pdb; pdb.pm()} to enter the post-mortem
116debugger; see the chapter ``The Python Debugger'' for more
117information.)
118\stmodindex{pdb}
119
120The meaning of the variables is the same
121as that of the return values from \code{sys.exc_info()} above.
122(Since there is only one interactive thread, thread-safety is not a
123concern for these variables, unlike for \code{sys.exc_type} etc.)
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000124\end{datadesc}
125
126\begin{datadesc}{modules}
127 Gives the list of modules that have already been loaded.
128 This can be manipulated to force reloading of modules and other tricks.
129\end{datadesc}
130
131\begin{datadesc}{path}
132 A list of strings that specifies the search path for modules.
133 Initialized from the environment variable \code{PYTHONPATH}, or an
Guido van Rossum0a3c7531997-06-02 17:32:41 +0000134 installation-dependent default.
135
136The first item of this list, \code{sys.path[0]}, is the
137directory containing the script that was used to invoke the Python
138interpreter. If the script directory is not available (e.g. if the
139interpreter is invoked interactively or if the script is read from
140standard input), \code{sys.path[0]} is the empty string, which directs
141Python to search modules in the current directory first. Notice that
142the script directory is inserted {\em before} the entries inserted as
143a result of \code{\$PYTHONPATH}.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000144\end{datadesc}
145
Guido van Rossum6b686e91995-07-07 23:00:35 +0000146\begin{datadesc}{platform}
Guido van Rossum0a3c7531997-06-02 17:32:41 +0000147This string contains a platform identifier, e.g. \code{sunos5} or
148\code{linux1}. This can be used to append platform-specific
149components to \code{sys.path}, for instance.
150\end{datadesc}
151
152\begin{datadesc}{prefix}
153A string giving the site-specific directory prefix where the platform
154independent Python files are installed; by default, this is the string
155\code{"/usr/local"}. This can be set at build time with the
156\code{--prefix} argument to the \code{configure} script. The main
157collection of Python library modules is installed in the directory
158\code{sys.prefix+"/lib/python\emph{VER}"} while the platform
159independent header files (all except \code{config.h}) are stored in
160\code{sys.prefix+"/include/python\emph{VER}"},
161where \emph{VER} is equal to \code{sys.version[:3]}.
162
Guido van Rossum6b686e91995-07-07 23:00:35 +0000163\end{datadesc}
164
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000165\begin{datadesc}{ps1}
166\dataline{ps2}
167 Strings specifying the primary and secondary prompt of the
168 interpreter. These are only defined if the interpreter is in
169 interactive mode. Their initial values in this case are
170 \code{'>>> '} and \code{'... '}.
171\end{datadesc}
172
Guido van Rossum9c51e411995-01-10 10:50:58 +0000173\begin{funcdesc}{setcheckinterval}{interval}
174Set the interpreter's ``check interval''. This integer value
175determines how often the interpreter checks for periodic things such
176as thread switches and signal handlers. The default is 10, meaning
177the check is performed every 10 Python virtual instructions. Setting
178it to a larger value may increase performance for programs using
Guido van Rossum6c4f0031995-03-07 10:14:09 +0000179threads. Setting it to a value $\leq 0$ checks every virtual instruction,
Guido van Rossum9c51e411995-01-10 10:50:58 +0000180maximizing responsiveness as well as overhead.
Guido van Rossum7f49b7a1995-01-12 12:38:46 +0000181\end{funcdesc}
Guido van Rossum9c51e411995-01-10 10:50:58 +0000182
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000183\begin{funcdesc}{settrace}{tracefunc}
184 Set the system's trace function, which allows you to implement a
Guido van Rossum470be141995-03-17 16:07:09 +0000185 Python source code debugger in Python. See section ``How It Works''
186 in the chapter on the Python Debugger.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000187\end{funcdesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000188\index{trace function}
Guido van Rossum470be141995-03-17 16:07:09 +0000189\index{debugger}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000190
191\begin{funcdesc}{setprofile}{profilefunc}
192 Set the system's profile function, which allows you to implement a
Guido van Rossum470be141995-03-17 16:07:09 +0000193 Python source code profiler in Python. See the chapter on the
194 Python Profiler. The system's profile function
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000195 is called similarly to the system's trace function (see
196 \code{sys.settrace}), but it isn't called for each executed line of
197 code (only on call and return and when an exception occurs). Also,
198 its return value is not used, so it can just return \code{None}.
199\end{funcdesc}
200\index{profile function}
Guido van Rossum470be141995-03-17 16:07:09 +0000201\index{profiler}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000202
203\begin{datadesc}{stdin}
204\dataline{stdout}
205\dataline{stderr}
206 File objects corresponding to the interpreter's standard input,
207 output and error streams. \code{sys.stdin} is used for all
208 interpreter input except for scripts but including calls to
209 \code{input()} and \code{raw_input()}. \code{sys.stdout} is used
210 for the output of \code{print} and expression statements and for the
211 prompts of \code{input()} and \code{raw_input()}. The interpreter's
212 own prompts and (almost all of) its error messages go to
213 \code{sys.stderr}. \code{sys.stdout} and \code{sys.stderr} needn't
214 be built-in file objects: any object is acceptable as long as it has
Guido van Rossum470be141995-03-17 16:07:09 +0000215 a \code{write} method that takes a string argument. (Changing these
216 objects doesn't affect the standard I/O streams of processes
217 executed by \code{popen()}, \code{system()} or the \code{exec*()}
218 family of functions in the \code{os} module.)
219\stmodindex{os}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000220\end{datadesc}
221
222\begin{datadesc}{tracebacklimit}
223When this variable is set to an integer value, it determines the
224maximum number of levels of traceback information printed when an
225unhandled exception occurs. The default is 1000. When set to 0 or
226less, all traceback information is suppressed and only the exception
227type and value are printed.
228\end{datadesc}
Guido van Rossum0a3c7531997-06-02 17:32:41 +0000229
230\begin{datadesc}{version}
231A string containing the version number of the Python interpreter.
232\end{datadesc}