blob: f7bc8e25f3d8e4a4a93fd2d05cf0b9ef2374fc0a [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
Fred Drake19479911998-02-13 06:58:54 +00009\setindexsubitem{(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
Fred Drake19479911998-02-13 06:58:54 +000084\code{sys.exec_prefix+"/lib/python\var{version}/config"}, and shared library
Guido van Rossum0a3c7531997-06-02 17:32:41 +000085modules are installed in
Fred Drake19479911998-02-13 06:58:54 +000086\code{sys.exec_prefix+"/lib/python\var{version}/lib-dynload"},
87where \var{version} is equal to \code{sys.version[:3]}.
Guido van Rossum0a3c7531997-06-02 17:32:41 +000088\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
Guido van Rossum6e91c6a1998-02-07 21:17:05 +0000107\begin{funcdesc}{getrefcount}{object}
108Return the reference count of the \var{object}. The count returned is
109generally one higher than you might expect, because it includes the
110(temporary) reference as an argument to \code{getrefcount()}.
111\end{funcdesc}
112
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000113\begin{datadesc}{last_type}
114\dataline{last_value}
115\dataline{last_traceback}
Guido van Rossum871cf161997-10-20 22:38:43 +0000116These three variables are not always defined; they are set when an
117exception is not handled and the interpreter prints an error message
118and a stack traceback. Their intended use is to allow an interactive
119user to import a debugger module and engage in post-mortem debugging
120without having to re-execute the command that caused the error.
121(Typical use is \code{import pdb; pdb.pm()} to enter the post-mortem
122debugger; see the chapter ``The Python Debugger'' for more
123information.)
Fred Drake54820dc1997-12-15 21:56:05 +0000124\refstmodindex{pdb}
Guido van Rossum871cf161997-10-20 22:38:43 +0000125
126The meaning of the variables is the same
127as that of the return values from \code{sys.exc_info()} above.
128(Since there is only one interactive thread, thread-safety is not a
129concern for these variables, unlike for \code{sys.exc_type} etc.)
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000130\end{datadesc}
131
132\begin{datadesc}{modules}
133 Gives the list of modules that have already been loaded.
134 This can be manipulated to force reloading of modules and other tricks.
135\end{datadesc}
136
137\begin{datadesc}{path}
Fred Drake2b67bee1998-01-13 18:35:51 +0000138\indexiii{module}{search}{path}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000139 A list of strings that specifies the search path for modules.
140 Initialized from the environment variable \code{PYTHONPATH}, or an
Guido van Rossum0a3c7531997-06-02 17:32:41 +0000141 installation-dependent default.
142
143The first item of this list, \code{sys.path[0]}, is the
144directory containing the script that was used to invoke the Python
145interpreter. If the script directory is not available (e.g. if the
146interpreter is invoked interactively or if the script is read from
147standard input), \code{sys.path[0]} is the empty string, which directs
148Python to search modules in the current directory first. Notice that
Fred Drake54820dc1997-12-15 21:56:05 +0000149the script directory is inserted \emph{before} the entries inserted as
Guido van Rossum0a3c7531997-06-02 17:32:41 +0000150a result of \code{\$PYTHONPATH}.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000151\end{datadesc}
152
Guido van Rossum6b686e91995-07-07 23:00:35 +0000153\begin{datadesc}{platform}
Guido van Rossum0a3c7531997-06-02 17:32:41 +0000154This string contains a platform identifier, e.g. \code{sunos5} or
155\code{linux1}. This can be used to append platform-specific
156components to \code{sys.path}, for instance.
157\end{datadesc}
158
159\begin{datadesc}{prefix}
160A string giving the site-specific directory prefix where the platform
161independent Python files are installed; by default, this is the string
162\code{"/usr/local"}. This can be set at build time with the
163\code{--prefix} argument to the \code{configure} script. The main
164collection of Python library modules is installed in the directory
Fred Drake19479911998-02-13 06:58:54 +0000165\code{sys.prefix+"/lib/python\var{version}"} while the platform
Guido van Rossum0a3c7531997-06-02 17:32:41 +0000166independent header files (all except \code{config.h}) are stored in
Fred Drake19479911998-02-13 06:58:54 +0000167\code{sys.prefix+"/include/python\var{version}"},
168where \var{version} is equal to \code{sys.version[:3]}.
Guido van Rossum0a3c7531997-06-02 17:32:41 +0000169
Guido van Rossum6b686e91995-07-07 23:00:35 +0000170\end{datadesc}
171
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000172\begin{datadesc}{ps1}
173\dataline{ps2}
174 Strings specifying the primary and secondary prompt of the
175 interpreter. These are only defined if the interpreter is in
176 interactive mode. Their initial values in this case are
Guido van Rossumee9f8201997-11-25 21:12:27 +0000177 \code{'>>> '} and \code{'... '}. If a non-string object is assigned
178 to either variable, its \code{str()} is re-evaluated each time the
179 interpreter prepares to read a new interactive command; this can be
180 used to implement a dynamic prompt.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000181\end{datadesc}
182
Guido van Rossum9c51e411995-01-10 10:50:58 +0000183\begin{funcdesc}{setcheckinterval}{interval}
184Set the interpreter's ``check interval''. This integer value
185determines how often the interpreter checks for periodic things such
186as thread switches and signal handlers. The default is 10, meaning
187the check is performed every 10 Python virtual instructions. Setting
188it to a larger value may increase performance for programs using
Guido van Rossumf259efe1997-11-25 01:00:40 +0000189threads. Setting it to a value \code{<=} 0 checks every virtual instruction,
Guido van Rossum9c51e411995-01-10 10:50:58 +0000190maximizing responsiveness as well as overhead.
Guido van Rossum7f49b7a1995-01-12 12:38:46 +0000191\end{funcdesc}
Guido van Rossum9c51e411995-01-10 10:50:58 +0000192
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000193\begin{funcdesc}{settrace}{tracefunc}
194 Set the system's trace function, which allows you to implement a
Guido van Rossum470be141995-03-17 16:07:09 +0000195 Python source code debugger in Python. See section ``How It Works''
196 in the chapter on the Python Debugger.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000197\end{funcdesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000198\index{trace function}
Guido van Rossum470be141995-03-17 16:07:09 +0000199\index{debugger}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000200
201\begin{funcdesc}{setprofile}{profilefunc}
202 Set the system's profile function, which allows you to implement a
Guido van Rossum470be141995-03-17 16:07:09 +0000203 Python source code profiler in Python. See the chapter on the
204 Python Profiler. The system's profile function
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000205 is called similarly to the system's trace function (see
206 \code{sys.settrace}), but it isn't called for each executed line of
207 code (only on call and return and when an exception occurs). Also,
208 its return value is not used, so it can just return \code{None}.
209\end{funcdesc}
210\index{profile function}
Guido van Rossum470be141995-03-17 16:07:09 +0000211\index{profiler}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000212
213\begin{datadesc}{stdin}
214\dataline{stdout}
215\dataline{stderr}
216 File objects corresponding to the interpreter's standard input,
217 output and error streams. \code{sys.stdin} is used for all
218 interpreter input except for scripts but including calls to
219 \code{input()} and \code{raw_input()}. \code{sys.stdout} is used
220 for the output of \code{print} and expression statements and for the
221 prompts of \code{input()} and \code{raw_input()}. The interpreter's
222 own prompts and (almost all of) its error messages go to
223 \code{sys.stderr}. \code{sys.stdout} and \code{sys.stderr} needn't
224 be built-in file objects: any object is acceptable as long as it has
Fred Drake54820dc1997-12-15 21:56:05 +0000225 a \code{write()} method that takes a string argument. (Changing these
Guido van Rossum470be141995-03-17 16:07:09 +0000226 objects doesn't affect the standard I/O streams of processes
227 executed by \code{popen()}, \code{system()} or the \code{exec*()}
228 family of functions in the \code{os} module.)
Fred Drake54820dc1997-12-15 21:56:05 +0000229\refstmodindex{os}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000230\end{datadesc}
231
232\begin{datadesc}{tracebacklimit}
233When this variable is set to an integer value, it determines the
234maximum number of levels of traceback information printed when an
235unhandled exception occurs. The default is 1000. When set to 0 or
236less, all traceback information is suppressed and only the exception
237type and value are printed.
238\end{datadesc}
Guido van Rossum0a3c7531997-06-02 17:32:41 +0000239
240\begin{datadesc}{version}
241A string containing the version number of the Python interpreter.
242\end{datadesc}