Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 1 | \section{Built-in Module \sectcode{sys}} |
Guido van Rossum | e47da0a | 1997-07-17 16:34:52 +0000 | [diff] [blame] | 2 | \label{module-sys} |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 3 | |
| 4 | \bimodindex{sys} |
| 5 | This module provides access to some variables used or maintained by the |
| 6 | interpreter and to functions that interact strongly with the interpreter. |
| 7 | It is always available. |
| 8 | |
Fred Drake | 1947991 | 1998-02-13 06:58:54 +0000 | [diff] [blame] | 9 | \setindexsubitem{(in module sys)} |
Guido van Rossum | 470be14 | 1995-03-17 16:07:09 +0000 | [diff] [blame] | 10 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 11 | \begin{datadesc}{argv} |
| 12 | The list of command line arguments passed to a Python script. |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 13 | \code{argv[0]} is the script name (it is operating system |
Guido van Rossum | 470be14 | 1995-03-17 16:07:09 +0000 | [diff] [blame] | 14 | dependent whether this is a full pathname or not). |
| 15 | If the command was executed using the \samp{-c} command line option |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 16 | to the interpreter, \code{argv[0]} is set to the string |
Guido van Rossum | 470be14 | 1995-03-17 16:07:09 +0000 | [diff] [blame] | 17 | \code{"-c"}. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 18 | If no script name was passed to the Python interpreter, |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 19 | \code{argv} has zero length. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 20 | \end{datadesc} |
| 21 | |
| 22 | \begin{datadesc}{builtin_module_names} |
Guido van Rossum | 0d2971b | 1997-01-06 23:01:02 +0000 | [diff] [blame] | 23 | A tuple of strings giving the names of all modules that are compiled |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 24 | into this Python interpreter. (This information is not available in |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 25 | any other way --- \code{modules.keys()} only lists the imported |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 26 | modules.) |
| 27 | \end{datadesc} |
| 28 | |
Guido van Rossum | 871cf16 | 1997-10-20 22:38:43 +0000 | [diff] [blame] | 29 | \begin{funcdesc}{exc_info}{} |
| 30 | This function returns a tuple of three values that give information |
| 31 | about the exception that is currently being handled. The information |
| 32 | returned is specific both to the current thread and to the current |
| 33 | stack frame. If the current stack frame is not handling an exception, |
| 34 | the information is taken from the calling stack frame, or its caller, |
| 35 | and so on until a stack frame is found that is handling an exception. |
| 36 | Here, ``handling an exception'' is defined as ``executing or having |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 37 | executed an except clause.'' For any stack frame, only |
Guido van Rossum | 871cf16 | 1997-10-20 22:38:43 +0000 | [diff] [blame] | 38 | information about the most recently handled exception is accessible. |
| 39 | |
| 40 | If no exception is being handled anywhere on the stack, a tuple |
| 41 | containing three \code{None} values is returned. Otherwise, the |
| 42 | values returned are |
| 43 | \code{(\var{type}, \var{value}, \var{traceback})}. |
| 44 | Their meaning is: \var{type} gets the exception type of the exception |
| 45 | being handled (a string or class object); \var{value} gets the |
| 46 | exception parameter (its \dfn{associated value} or the second argument |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 47 | to \keyword{raise}, which is always a class instance if the exception |
Guido van Rossum | 871cf16 | 1997-10-20 22:38:43 +0000 | [diff] [blame] | 48 | type is a class object); \var{traceback} gets a traceback object (see |
| 49 | the Reference Manual) which encapsulates the call stack at the point |
| 50 | where the exception originally occurred. |
| 51 | \obindex{traceback} |
| 52 | |
| 53 | \strong{Warning:} assigning the \var{traceback} return value to a |
| 54 | local variable in a function that is handling an exception will cause |
| 55 | a circular reference. This will prevent anything referenced by a local |
| 56 | variable in the same function or by the traceback from being garbage |
| 57 | collected. Since most functions don't need access to the traceback, |
| 58 | the best solution is to use something like |
| 59 | \code{type, value = sys.exc_info()[:2]} |
| 60 | to extract only the exception type and value. If you do need the |
| 61 | traceback, make sure to delete it after use (best done with a |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 62 | \keyword{try} ... \keyword{finally} statement) or to call |
| 63 | \function{exc_info()} in a function that does not itself handle an |
| 64 | exception. |
Guido van Rossum | 871cf16 | 1997-10-20 22:38:43 +0000 | [diff] [blame] | 65 | \end{funcdesc} |
| 66 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 67 | \begin{datadesc}{exc_type} |
| 68 | \dataline{exc_value} |
| 69 | \dataline{exc_traceback} |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 70 | \deprecated {1.5} |
| 71 | {Use \function{exc_info()} instead.} |
| 72 | Since they are global variables, they are not specific to the current |
Guido van Rossum | 871cf16 | 1997-10-20 22:38:43 +0000 | [diff] [blame] | 73 | thread, so their use is not safe in a multi-threaded program. When no |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 74 | exception is being handled, \code{exc_type} is set to \code{None} and |
| 75 | the other two are undefined. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 76 | \end{datadesc} |
| 77 | |
Guido van Rossum | 0a3c753 | 1997-06-02 17:32:41 +0000 | [diff] [blame] | 78 | \begin{datadesc}{exec_prefix} |
| 79 | A string giving the site-specific |
| 80 | directory prefix where the platform-dependent Python files are |
| 81 | installed; by default, this is also \code{"/usr/local"}. This can be |
Fred Drake | f76abb5 | 1998-03-27 00:37:40 +0000 | [diff] [blame^] | 82 | set at build time with the \code{-}\code{-exec-prefix} argument to the |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 83 | \program{configure} script. Specifically, all configuration files |
| 84 | (e.g. the \file{config.h} header file) are installed in the directory |
| 85 | \code{exec_prefix + "/lib/python\var{version}/config"}, and shared library |
Guido van Rossum | 0a3c753 | 1997-06-02 17:32:41 +0000 | [diff] [blame] | 86 | modules are installed in |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 87 | \code{exec_prefix + "/lib/python\var{version}/lib-dynload"}, |
| 88 | where \var{version} is equal to \code{version[:3]}. |
Guido van Rossum | 0a3c753 | 1997-06-02 17:32:41 +0000 | [diff] [blame] | 89 | \end{datadesc} |
| 90 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 91 | \begin{funcdesc}{exit}{n} |
| 92 | Exit from Python with numeric exit status \var{n}. This is |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 93 | implemented by raising the \exception{SystemExit} exception, so cleanup |
| 94 | actions specified by finally clauses of \keyword{try} statements |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 95 | are honored, and it is possible to catch the exit attempt at an outer |
| 96 | level. |
| 97 | \end{funcdesc} |
| 98 | |
| 99 | \begin{datadesc}{exitfunc} |
| 100 | This value is not actually defined by the module, but can be set by |
| 101 | the user (or by a program) to specify a clean-up action at program |
| 102 | exit. When set, it should be a parameterless function. This function |
Guido van Rossum | 6b686e9 | 1995-07-07 23:00:35 +0000 | [diff] [blame] | 103 | will be called when the interpreter exits in any way (except when a |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 104 | fatal error occurs: in that case the interpreter's internal state |
| 105 | cannot be trusted). |
| 106 | \end{datadesc} |
| 107 | |
Guido van Rossum | 6e91c6a | 1998-02-07 21:17:05 +0000 | [diff] [blame] | 108 | \begin{funcdesc}{getrefcount}{object} |
| 109 | Return the reference count of the \var{object}. The count returned is |
| 110 | generally one higher than you might expect, because it includes the |
| 111 | (temporary) reference as an argument to \code{getrefcount()}. |
| 112 | \end{funcdesc} |
| 113 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 114 | \begin{datadesc}{last_type} |
| 115 | \dataline{last_value} |
| 116 | \dataline{last_traceback} |
Guido van Rossum | 871cf16 | 1997-10-20 22:38:43 +0000 | [diff] [blame] | 117 | These three variables are not always defined; they are set when an |
| 118 | exception is not handled and the interpreter prints an error message |
| 119 | and a stack traceback. Their intended use is to allow an interactive |
| 120 | user to import a debugger module and engage in post-mortem debugging |
| 121 | without having to re-execute the command that caused the error. |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 122 | (Typical use is \samp{import pdb; pdb.pm()} to enter the post-mortem |
Guido van Rossum | 871cf16 | 1997-10-20 22:38:43 +0000 | [diff] [blame] | 123 | debugger; see the chapter ``The Python Debugger'' for more |
| 124 | information.) |
Fred Drake | 54820dc | 1997-12-15 21:56:05 +0000 | [diff] [blame] | 125 | \refstmodindex{pdb} |
Guido van Rossum | 871cf16 | 1997-10-20 22:38:43 +0000 | [diff] [blame] | 126 | |
| 127 | The meaning of the variables is the same |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 128 | as that of the return values from \function{exc_info()} above. |
Guido van Rossum | 871cf16 | 1997-10-20 22:38:43 +0000 | [diff] [blame] | 129 | (Since there is only one interactive thread, thread-safety is not a |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 130 | concern for these variables, unlike for \code{exc_type} etc.) |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 131 | \end{datadesc} |
| 132 | |
| 133 | \begin{datadesc}{modules} |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 134 | This is a dictionary that maps module names to modules which have |
| 135 | already been loaded. This can be manipulated to force reloading of |
| 136 | modules and other tricks. Note that removing a module from this |
| 137 | dictionary is \emph{not} the same as calling |
| 138 | \function{reload()}\bifuncindex{reload} on the corresponding module |
| 139 | object. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 140 | \end{datadesc} |
| 141 | |
| 142 | \begin{datadesc}{path} |
Fred Drake | 2b67bee | 1998-01-13 18:35:51 +0000 | [diff] [blame] | 143 | \indexiii{module}{search}{path} |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 144 | A list of strings that specifies the search path for modules. |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 145 | Initialized from the environment variable \code{\$PYTHONPATH}, or an |
Guido van Rossum | 0a3c753 | 1997-06-02 17:32:41 +0000 | [diff] [blame] | 146 | installation-dependent default. |
| 147 | |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 148 | The first item of this list, \code{path[0]}, is the |
Guido van Rossum | 0a3c753 | 1997-06-02 17:32:41 +0000 | [diff] [blame] | 149 | directory containing the script that was used to invoke the Python |
| 150 | interpreter. If the script directory is not available (e.g. if the |
| 151 | interpreter is invoked interactively or if the script is read from |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 152 | standard input), \code{path[0]} is the empty string, which directs |
Guido van Rossum | 0a3c753 | 1997-06-02 17:32:41 +0000 | [diff] [blame] | 153 | Python to search modules in the current directory first. Notice that |
Fred Drake | 54820dc | 1997-12-15 21:56:05 +0000 | [diff] [blame] | 154 | the script directory is inserted \emph{before} the entries inserted as |
Guido van Rossum | 0a3c753 | 1997-06-02 17:32:41 +0000 | [diff] [blame] | 155 | a result of \code{\$PYTHONPATH}. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 156 | \end{datadesc} |
| 157 | |
Guido van Rossum | 6b686e9 | 1995-07-07 23:00:35 +0000 | [diff] [blame] | 158 | \begin{datadesc}{platform} |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 159 | This string contains a platform identifier, e.g. \code{'sunos5'} or |
| 160 | \code{'linux1'}. This can be used to append platform-specific |
| 161 | components to \code{path}, for instance. |
Guido van Rossum | 0a3c753 | 1997-06-02 17:32:41 +0000 | [diff] [blame] | 162 | \end{datadesc} |
| 163 | |
| 164 | \begin{datadesc}{prefix} |
| 165 | A string giving the site-specific directory prefix where the platform |
| 166 | independent Python files are installed; by default, this is the string |
| 167 | \code{"/usr/local"}. This can be set at build time with the |
Fred Drake | f76abb5 | 1998-03-27 00:37:40 +0000 | [diff] [blame^] | 168 | \code{-}\code{-prefix} argument to the \program{configure} script. The main |
Guido van Rossum | 0a3c753 | 1997-06-02 17:32:41 +0000 | [diff] [blame] | 169 | collection of Python library modules is installed in the directory |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 170 | \code{prefix + "/lib/python\var{version}"} while the platform |
| 171 | independent header files (all except \file{config.h}) are stored in |
| 172 | \code{prefix + "/include/python\var{version}"}, |
| 173 | where \var{version} is equal to \code{version[:3]}. |
Guido van Rossum | 0a3c753 | 1997-06-02 17:32:41 +0000 | [diff] [blame] | 174 | |
Guido van Rossum | 6b686e9 | 1995-07-07 23:00:35 +0000 | [diff] [blame] | 175 | \end{datadesc} |
| 176 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 177 | \begin{datadesc}{ps1} |
| 178 | \dataline{ps2} |
| 179 | Strings specifying the primary and secondary prompt of the |
| 180 | interpreter. These are only defined if the interpreter is in |
| 181 | interactive mode. Their initial values in this case are |
Guido van Rossum | ee9f820 | 1997-11-25 21:12:27 +0000 | [diff] [blame] | 182 | \code{'>>> '} and \code{'... '}. If a non-string object is assigned |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 183 | to either variable, its \function{str()} is re-evaluated each time |
| 184 | the interpreter prepares to read a new interactive command; this can |
| 185 | be used to implement a dynamic prompt. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 186 | \end{datadesc} |
| 187 | |
Guido van Rossum | 9c51e41 | 1995-01-10 10:50:58 +0000 | [diff] [blame] | 188 | \begin{funcdesc}{setcheckinterval}{interval} |
| 189 | Set the interpreter's ``check interval''. This integer value |
| 190 | determines how often the interpreter checks for periodic things such |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 191 | as thread switches and signal handlers. The default is \code{10}, meaning |
Guido van Rossum | 9c51e41 | 1995-01-10 10:50:58 +0000 | [diff] [blame] | 192 | the check is performed every 10 Python virtual instructions. Setting |
| 193 | it to a larger value may increase performance for programs using |
Guido van Rossum | f259efe | 1997-11-25 01:00:40 +0000 | [diff] [blame] | 194 | threads. Setting it to a value \code{<=} 0 checks every virtual instruction, |
Guido van Rossum | 9c51e41 | 1995-01-10 10:50:58 +0000 | [diff] [blame] | 195 | maximizing responsiveness as well as overhead. |
Guido van Rossum | 7f49b7a | 1995-01-12 12:38:46 +0000 | [diff] [blame] | 196 | \end{funcdesc} |
Guido van Rossum | 9c51e41 | 1995-01-10 10:50:58 +0000 | [diff] [blame] | 197 | |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 198 | \begin{funcdesc}{settrace}{tracefunc} |
| 199 | Set the system's trace function, which allows you to implement a |
Guido van Rossum | 470be14 | 1995-03-17 16:07:09 +0000 | [diff] [blame] | 200 | Python source code debugger in Python. See section ``How It Works'' |
| 201 | in the chapter on the Python Debugger. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 202 | \end{funcdesc} |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 203 | \index{trace function} |
Guido van Rossum | 470be14 | 1995-03-17 16:07:09 +0000 | [diff] [blame] | 204 | \index{debugger} |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 205 | |
| 206 | \begin{funcdesc}{setprofile}{profilefunc} |
| 207 | Set the system's profile function, which allows you to implement a |
Guido van Rossum | 470be14 | 1995-03-17 16:07:09 +0000 | [diff] [blame] | 208 | Python source code profiler in Python. See the chapter on the |
| 209 | Python Profiler. The system's profile function |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 210 | is called similarly to the system's trace function (see |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 211 | \function{settrace()}), but it isn't called for each executed line of |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 212 | code (only on call and return and when an exception occurs). Also, |
| 213 | its return value is not used, so it can just return \code{None}. |
| 214 | \end{funcdesc} |
| 215 | \index{profile function} |
Guido van Rossum | 470be14 | 1995-03-17 16:07:09 +0000 | [diff] [blame] | 216 | \index{profiler} |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 217 | |
| 218 | \begin{datadesc}{stdin} |
| 219 | \dataline{stdout} |
| 220 | \dataline{stderr} |
| 221 | File objects corresponding to the interpreter's standard input, |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 222 | output and error streams. \code{stdin} is used for all |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 223 | interpreter input except for scripts but including calls to |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 224 | \function{input()}\bifuncindex{input} and |
| 225 | \function{raw_input()}\bifuncindex{raw_input}. \code{stdout} is used |
| 226 | for the output of \keyword{print} and expression statements and for the |
| 227 | prompts of \function{input()} and \function{raw_input()}. The interpreter's |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 228 | own prompts and (almost all of) its error messages go to |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 229 | \code{stderr}. \code{stdout} and \code{stderr} needn't |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 230 | be built-in file objects: any object is acceptable as long as it has |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 231 | a \method{write()} method that takes a string argument. (Changing these |
Guido van Rossum | 470be14 | 1995-03-17 16:07:09 +0000 | [diff] [blame] | 232 | objects doesn't affect the standard I/O streams of processes |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 233 | executed by \function{os.popen()}, \function{os.system()} or the |
| 234 | \function{exec*()} family of functions in the \module{os} module.) |
Fred Drake | 54820dc | 1997-12-15 21:56:05 +0000 | [diff] [blame] | 235 | \refstmodindex{os} |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 236 | \end{datadesc} |
| 237 | |
| 238 | \begin{datadesc}{tracebacklimit} |
| 239 | When this variable is set to an integer value, it determines the |
| 240 | maximum number of levels of traceback information printed when an |
Fred Drake | 0fd72ee | 1998-03-08 05:43:51 +0000 | [diff] [blame] | 241 | unhandled exception occurs. The default is \code{1000}. When set to |
| 242 | 0 or less, all traceback information is suppressed and only the |
| 243 | exception type and value are printed. |
Guido van Rossum | 5fdeeea | 1994-01-02 01:22:07 +0000 | [diff] [blame] | 244 | \end{datadesc} |
Guido van Rossum | 0a3c753 | 1997-06-02 17:32:41 +0000 | [diff] [blame] | 245 | |
| 246 | \begin{datadesc}{version} |
| 247 | A string containing the version number of the Python interpreter. |
| 248 | \end{datadesc} |