blob: a94518061d13cdcb98ef88932560a09824b39f21 [file] [log] [blame]
Fred Drake3adf79e2001-10-12 19:01:43 +00001\chapter{Introduction \label{intro}}
2
3
4The Application Programmer's Interface to Python gives C and
5\Cpp{} programmers access to the Python interpreter at a variety of
Fred Drakec37b65e2001-11-28 07:26:15 +00006levels. The API is equally usable from \Cpp, but for brevity it is
Fred Drake3adf79e2001-10-12 19:01:43 +00007generally referred to as the Python/C API. There are two
8fundamentally different reasons for using the Python/C API. The first
9reason is to write \emph{extension modules} for specific purposes;
10these are C modules that extend the Python interpreter. This is
11probably the most common use. The second reason is to use Python as a
12component in a larger application; this technique is generally
13referred to as \dfn{embedding} Python in an application.
14
15Writing an extension module is a relatively well-understood process,
16where a ``cookbook'' approach works well. There are several tools
17that automate the process to some extent. While people have embedded
18Python in other applications since its early existence, the process of
19embedding Python is less straightforward than writing an extension.
20
21Many API functions are useful independent of whether you're embedding
22or extending Python; moreover, most applications that embed Python
23will need to provide a custom extension as well, so it's probably a
24good idea to become familiar with writing an extension before
25attempting to embed Python in a real application.
26
27
28\section{Include Files \label{includes}}
29
30All function, type and macro definitions needed to use the Python/C
31API are included in your code by the following line:
32
33\begin{verbatim}
34#include "Python.h"
35\end{verbatim}
36
37This implies inclusion of the following standard headers:
38\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>},
39\code{<limits.h>}, and \code{<stdlib.h>} (if available).
Fred Drake34c43202004-03-31 07:45:46 +000040
41\begin{notice}[warning]
42 Since Python may define some pre-processor definitions which affect
43 the standard headers on some systems, you \emph{must} include
44 \file{Python.h} before any standard headers are included.
45\end{notice}
Fred Drake3adf79e2001-10-12 19:01:43 +000046
47All user visible names defined by Python.h (except those defined by
48the included standard headers) have one of the prefixes \samp{Py} or
49\samp{_Py}. Names beginning with \samp{_Py} are for internal use by
50the Python implementation and should not be used by extension writers.
51Structure member names do not have a reserved prefix.
52
53\strong{Important:} user code should never define names that begin
54with \samp{Py} or \samp{_Py}. This confuses the reader, and
55jeopardizes the portability of the user code to future Python
56versions, which may define additional names beginning with one of
57these prefixes.
58
59The header files are typically installed with Python. On \UNIX, these
60are located in the directories
61\file{\envvar{prefix}/include/python\var{version}/} and
62\file{\envvar{exec_prefix}/include/python\var{version}/}, where
63\envvar{prefix} and \envvar{exec_prefix} are defined by the
64corresponding parameters to Python's \program{configure} script and
65\var{version} is \code{sys.version[:3]}. On Windows, the headers are
66installed in \file{\envvar{prefix}/include}, where \envvar{prefix} is
67the installation directory specified to the installer.
68
69To include the headers, place both directories (if different) on your
70compiler's search path for includes. Do \emph{not} place the parent
71directories on the search path and then use
72\samp{\#include <python\shortversion/Python.h>}; this will break on
73multi-platform builds since the platform independent headers under
74\envvar{prefix} include the platform specific headers from
75\envvar{exec_prefix}.
76
77\Cpp{} users should note that though the API is defined entirely using
78C, the header files do properly declare the entry points to be
79\code{extern "C"}, so there is no need to do anything special to use
80the API from \Cpp.
81
82
83\section{Objects, Types and Reference Counts \label{objects}}
84
85Most Python/C API functions have one or more arguments as well as a
86return value of type \ctype{PyObject*}. This type is a pointer
87to an opaque data type representing an arbitrary Python
88object. Since all Python object types are treated the same way by the
89Python language in most situations (e.g., assignments, scope rules,
90and argument passing), it is only fitting that they should be
91represented by a single C type. Almost all Python objects live on the
92heap: you never declare an automatic or static variable of type
93\ctype{PyObject}, only pointer variables of type \ctype{PyObject*} can
94be declared. The sole exception are the type objects\obindex{type};
95since these must never be deallocated, they are typically static
96\ctype{PyTypeObject} objects.
97
98All Python objects (even Python integers) have a \dfn{type} and a
99\dfn{reference count}. An object's type determines what kind of object
100it is (e.g., an integer, a list, or a user-defined function; there are
101many more as explained in the \citetitle[../ref/ref.html]{Python
102Reference Manual}). For each of the well-known types there is a macro
103to check whether an object is of that type; for instance,
104\samp{PyList_Check(\var{a})} is true if (and only if) the object
105pointed to by \var{a} is a Python list.
106
107
108\subsection{Reference Counts \label{refcounts}}
109
110The reference count is important because today's computers have a
111finite (and often severely limited) memory size; it counts how many
112different places there are that have a reference to an object. Such a
113place could be another object, or a global (or static) C variable, or
114a local variable in some C function. When an object's reference count
115becomes zero, the object is deallocated. If it contains references to
116other objects, their reference count is decremented. Those other
117objects may be deallocated in turn, if this decrement makes their
118reference count become zero, and so on. (There's an obvious problem
119with objects that reference each other here; for now, the solution is
120``don't do that.'')
121
122Reference counts are always manipulated explicitly. The normal way is
123to use the macro \cfunction{Py_INCREF()}\ttindex{Py_INCREF()} to
124increment an object's reference count by one, and
125\cfunction{Py_DECREF()}\ttindex{Py_DECREF()} to decrement it by
126one. The \cfunction{Py_DECREF()} macro is considerably more complex
127than the incref one, since it must check whether the reference count
128becomes zero and then cause the object's deallocator to be called.
129The deallocator is a function pointer contained in the object's type
130structure. The type-specific deallocator takes care of decrementing
131the reference counts for other objects contained in the object if this
132is a compound object type, such as a list, as well as performing any
133additional finalization that's needed. There's no chance that the
134reference count can overflow; at least as many bits are used to hold
135the reference count as there are distinct memory locations in virtual
136memory (assuming \code{sizeof(long) >= sizeof(char*)}). Thus, the
137reference count increment is a simple operation.
138
139It is not necessary to increment an object's reference count for every
140local variable that contains a pointer to an object. In theory, the
141object's reference count goes up by one when the variable is made to
142point to it and it goes down by one when the variable goes out of
143scope. However, these two cancel each other out, so at the end the
144reference count hasn't changed. The only real reason to use the
145reference count is to prevent the object from being deallocated as
146long as our variable is pointing to it. If we know that there is at
147least one other reference to the object that lives at least as long as
148our variable, there is no need to increment the reference count
149temporarily. An important situation where this arises is in objects
150that are passed as arguments to C functions in an extension module
151that are called from Python; the call mechanism guarantees to hold a
152reference to every argument for the duration of the call.
153
154However, a common pitfall is to extract an object from a list and
155hold on to it for a while without incrementing its reference count.
156Some other operation might conceivably remove the object from the
157list, decrementing its reference count and possible deallocating it.
158The real danger is that innocent-looking operations may invoke
159arbitrary Python code which could do this; there is a code path which
160allows control to flow back to the user from a \cfunction{Py_DECREF()},
161so almost any operation is potentially dangerous.
162
163A safe approach is to always use the generic operations (functions
164whose name begins with \samp{PyObject_}, \samp{PyNumber_},
165\samp{PySequence_} or \samp{PyMapping_}). These operations always
166increment the reference count of the object they return. This leaves
167the caller with the responsibility to call
168\cfunction{Py_DECREF()} when they are done with the result; this soon
169becomes second nature.
170
171
172\subsubsection{Reference Count Details \label{refcountDetails}}
173
174The reference count behavior of functions in the Python/C API is best
Martin v. Löwis5ce2fec2003-11-06 21:08:11 +0000175explained in terms of \emph{ownership of references}. Ownership
176pertains to references, never to objects (objects are not owned: they
177are always shared). "Owning a reference" means being responsible for
178calling Py_DECREF on it when the reference is no longer needed.
179Ownership can also be transferred, meaning that the code that receives
180ownership of the reference then becomes responsible for eventually
181decref'ing it by calling \cfunction{Py_DECREF()} or
Georg Brandl4caeff92006-02-18 22:55:59 +0000182\cfunction{Py_XDECREF()} when it's no longer needed---or passing on
Martin v. Löwis5ce2fec2003-11-06 21:08:11 +0000183this responsibility (usually to its caller).
184When a function passes ownership of a reference on to its caller, the
Fred Drake3adf79e2001-10-12 19:01:43 +0000185caller is said to receive a \emph{new} reference. When no ownership
186is transferred, the caller is said to \emph{borrow} the reference.
187Nothing needs to be done for a borrowed reference.
188
189Conversely, when a calling function passes it a reference to an
190object, there are two possibilities: the function \emph{steals} a
Georg Brandl4caeff92006-02-18 22:55:59 +0000191reference to the object, or it does not. \emph{Stealing a reference}
192means that when you pass a reference to a function, that function
193assumes that it now owns that reference, and you are not responsible
194for it any longer.
195
196Few functions steal references; the two notable exceptions are
Fred Drake3adf79e2001-10-12 19:01:43 +0000197\cfunction{PyList_SetItem()}\ttindex{PyList_SetItem()} and
198\cfunction{PyTuple_SetItem()}\ttindex{PyTuple_SetItem()}, which
199steal a reference to the item (but not to the tuple or list into which
200the item is put!). These functions were designed to steal a reference
201because of a common idiom for populating a tuple or list with newly
202created objects; for example, the code to create the tuple \code{(1,
2032, "three")} could look like this (forgetting about error handling for
204the moment; a better way to code this is shown below):
205
206\begin{verbatim}
207PyObject *t;
208
209t = PyTuple_New(3);
210PyTuple_SetItem(t, 0, PyInt_FromLong(1L));
211PyTuple_SetItem(t, 1, PyInt_FromLong(2L));
212PyTuple_SetItem(t, 2, PyString_FromString("three"));
213\end{verbatim}
214
Georg Brandl4caeff92006-02-18 22:55:59 +0000215Here, \cfunction{PyInt_FromLong()} returns a new reference which is
216immediately stolen by \cfunction{PyTuple_SetItem()}. When you want to
217keep using an object although the reference to it will be stolen,
218use \cfunction{Py_INCREF()} to grab another reference before calling the
219reference-stealing function.
220
Fred Drake3adf79e2001-10-12 19:01:43 +0000221Incidentally, \cfunction{PyTuple_SetItem()} is the \emph{only} way to
222set tuple items; \cfunction{PySequence_SetItem()} and
223\cfunction{PyObject_SetItem()} refuse to do this since tuples are an
224immutable data type. You should only use
225\cfunction{PyTuple_SetItem()} for tuples that you are creating
226yourself.
227
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000228Equivalent code for populating a list can be written using
229\cfunction{PyList_New()} and \cfunction{PyList_SetItem()}.
Fred Drake3adf79e2001-10-12 19:01:43 +0000230
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000231However, in practice, you will rarely use these ways of
Fred Drake3adf79e2001-10-12 19:01:43 +0000232creating and populating a tuple or list. There's a generic function,
233\cfunction{Py_BuildValue()}, that can create most common objects from
234C values, directed by a \dfn{format string}. For example, the
235above two blocks of code could be replaced by the following (which
236also takes care of the error checking):
237
238\begin{verbatim}
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000239PyObject *tuple, *list;
Fred Drake3adf79e2001-10-12 19:01:43 +0000240
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000241tuple = Py_BuildValue("(iis)", 1, 2, "three");
242list = Py_BuildValue("[iis]", 1, 2, "three");
Fred Drake3adf79e2001-10-12 19:01:43 +0000243\end{verbatim}
244
245It is much more common to use \cfunction{PyObject_SetItem()} and
246friends with items whose references you are only borrowing, like
247arguments that were passed in to the function you are writing. In
248that case, their behaviour regarding reference counts is much saner,
249since you don't have to increment a reference count so you can give a
250reference away (``have it be stolen''). For example, this function
251sets all items of a list (actually, any mutable sequence) to a given
252item:
253
254\begin{verbatim}
Fred Drake847c51a2001-10-25 15:53:44 +0000255int
256set_all(PyObject *target, PyObject *item)
Fred Drake3adf79e2001-10-12 19:01:43 +0000257{
258 int i, n;
259
260 n = PyObject_Length(target);
261 if (n < 0)
262 return -1;
263 for (i = 0; i < n; i++) {
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000264 PyObject *index = PyInt_FromLong(i);
265 if (!index)
Fred Drake3adf79e2001-10-12 19:01:43 +0000266 return -1;
Thomas Wouters00ee7ba2006-08-21 19:07:27 +0000267 if (PyObject_SetItem(target, index, item) < 0)
268 return -1;
269 Py_DECREF(index);
Fred Drake3adf79e2001-10-12 19:01:43 +0000270 }
271 return 0;
272}
273\end{verbatim}
274\ttindex{set_all()}
275
276The situation is slightly different for function return values.
277While passing a reference to most functions does not change your
278ownership responsibilities for that reference, many functions that
Raymond Hettinger68804312005-01-01 00:28:46 +0000279return a reference to an object give you ownership of the reference.
Fred Drake3adf79e2001-10-12 19:01:43 +0000280The reason is simple: in many cases, the returned object is created
281on the fly, and the reference you get is the only reference to the
282object. Therefore, the generic functions that return object
283references, like \cfunction{PyObject_GetItem()} and
284\cfunction{PySequence_GetItem()}, always return a new reference (the
285caller becomes the owner of the reference).
286
287It is important to realize that whether you own a reference returned
288by a function depends on which function you call only --- \emph{the
Neal Norwitz7decf5e2003-10-13 17:47:30 +0000289plumage} (the type of the object passed as an
Fred Drake3adf79e2001-10-12 19:01:43 +0000290argument to the function) \emph{doesn't enter into it!} Thus, if you
291extract an item from a list using \cfunction{PyList_GetItem()}, you
292don't own the reference --- but if you obtain the same item from the
293same list using \cfunction{PySequence_GetItem()} (which happens to
294take exactly the same arguments), you do own a reference to the
295returned object.
296
297Here is an example of how you could write a function that computes the
298sum of the items in a list of integers; once using
299\cfunction{PyList_GetItem()}\ttindex{PyList_GetItem()}, and once using
300\cfunction{PySequence_GetItem()}\ttindex{PySequence_GetItem()}.
301
302\begin{verbatim}
Fred Drake847c51a2001-10-25 15:53:44 +0000303long
304sum_list(PyObject *list)
Fred Drake3adf79e2001-10-12 19:01:43 +0000305{
306 int i, n;
307 long total = 0;
308 PyObject *item;
309
310 n = PyList_Size(list);
311 if (n < 0)
312 return -1; /* Not a list */
313 for (i = 0; i < n; i++) {
314 item = PyList_GetItem(list, i); /* Can't fail */
315 if (!PyInt_Check(item)) continue; /* Skip non-integers */
316 total += PyInt_AsLong(item);
317 }
318 return total;
319}
320\end{verbatim}
321\ttindex{sum_list()}
322
323\begin{verbatim}
Fred Drake847c51a2001-10-25 15:53:44 +0000324long
325sum_sequence(PyObject *sequence)
Fred Drake3adf79e2001-10-12 19:01:43 +0000326{
327 int i, n;
328 long total = 0;
329 PyObject *item;
330 n = PySequence_Length(sequence);
331 if (n < 0)
332 return -1; /* Has no length */
333 for (i = 0; i < n; i++) {
334 item = PySequence_GetItem(sequence, i);
335 if (item == NULL)
336 return -1; /* Not a sequence, or other failure */
337 if (PyInt_Check(item))
338 total += PyInt_AsLong(item);
339 Py_DECREF(item); /* Discard reference ownership */
340 }
341 return total;
342}
343\end{verbatim}
344\ttindex{sum_sequence()}
345
346
347\subsection{Types \label{types}}
348
349There are few other data types that play a significant role in
350the Python/C API; most are simple C types such as \ctype{int},
351\ctype{long}, \ctype{double} and \ctype{char*}. A few structure types
352are used to describe static tables used to list the functions exported
353by a module or the data attributes of a new object type, and another
354is used to describe the value of a complex number. These will
355be discussed together with the functions that use them.
356
357
358\section{Exceptions \label{exceptions}}
359
360The Python programmer only needs to deal with exceptions if specific
361error handling is required; unhandled exceptions are automatically
362propagated to the caller, then to the caller's caller, and so on, until
363they reach the top-level interpreter, where they are reported to the
364user accompanied by a stack traceback.
365
366For C programmers, however, error checking always has to be explicit.
367All functions in the Python/C API can raise exceptions, unless an
368explicit claim is made otherwise in a function's documentation. In
369general, when a function encounters an error, it sets an exception,
370discards any object references that it owns, and returns an
371error indicator --- usually \NULL{} or \code{-1}. A few functions
372return a Boolean true/false result, with false indicating an error.
373Very few functions return no explicit error indicator or have an
374ambiguous return value, and require explicit testing for errors with
375\cfunction{PyErr_Occurred()}\ttindex{PyErr_Occurred()}.
376
377Exception state is maintained in per-thread storage (this is
378equivalent to using global storage in an unthreaded application). A
379thread can be in one of two states: an exception has occurred, or not.
380The function \cfunction{PyErr_Occurred()} can be used to check for
381this: it returns a borrowed reference to the exception type object
382when an exception has occurred, and \NULL{} otherwise. There are a
383number of functions to set the exception state:
384\cfunction{PyErr_SetString()}\ttindex{PyErr_SetString()} is the most
385common (though not the most general) function to set the exception
386state, and \cfunction{PyErr_Clear()}\ttindex{PyErr_Clear()} clears the
387exception state.
388
389The full exception state consists of three objects (all of which can
390be \NULL): the exception type, the corresponding exception
391value, and the traceback. These have the same meanings as the Python
Neal Norwitzac3625f2006-03-17 05:49:33 +0000392result of \code{sys.exc_info()}; however, they are not the same: the Python
Fred Drake3adf79e2001-10-12 19:01:43 +0000393objects represent the last exception being handled by a Python
394\keyword{try} \ldots\ \keyword{except} statement, while the C level
395exception state only exists while an exception is being passed on
396between C functions until it reaches the Python bytecode interpreter's
Neal Norwitzac3625f2006-03-17 05:49:33 +0000397main loop, which takes care of transferring it to \code{sys.exc_info()}
Fred Drake3adf79e2001-10-12 19:01:43 +0000398and friends.
399
400Note that starting with Python 1.5, the preferred, thread-safe way to
401access the exception state from Python code is to call the function
402\withsubitem{(in module sys)}{\ttindex{exc_info()}}
403\function{sys.exc_info()}, which returns the per-thread exception state
404for Python code. Also, the semantics of both ways to access the
405exception state have changed so that a function which catches an
406exception will save and restore its thread's exception state so as to
407preserve the exception state of its caller. This prevents common bugs
408in exception handling code caused by an innocent-looking function
409overwriting the exception being handled; it also reduces the often
410unwanted lifetime extension for objects that are referenced by the
411stack frames in the traceback.
412
413As a general principle, a function that calls another function to
414perform some task should check whether the called function raised an
415exception, and if so, pass the exception state on to its caller. It
416should discard any object references that it owns, and return an
417error indicator, but it should \emph{not} set another exception ---
418that would overwrite the exception that was just raised, and lose
419important information about the exact cause of the error.
420
421A simple example of detecting exceptions and passing them on is shown
422in the \cfunction{sum_sequence()}\ttindex{sum_sequence()} example
423above. It so happens that that example doesn't need to clean up any
424owned references when it detects an error. The following example
425function shows some error cleanup. First, to remind you why you like
426Python, we show the equivalent Python code:
427
428\begin{verbatim}
429def incr_item(dict, key):
430 try:
431 item = dict[key]
432 except KeyError:
433 item = 0
434 dict[key] = item + 1
435\end{verbatim}
436\ttindex{incr_item()}
437
438Here is the corresponding C code, in all its glory:
439
440\begin{verbatim}
Fred Drake847c51a2001-10-25 15:53:44 +0000441int
442incr_item(PyObject *dict, PyObject *key)
Fred Drake3adf79e2001-10-12 19:01:43 +0000443{
444 /* Objects all initialized to NULL for Py_XDECREF */
445 PyObject *item = NULL, *const_one = NULL, *incremented_item = NULL;
446 int rv = -1; /* Return value initialized to -1 (failure) */
447
448 item = PyObject_GetItem(dict, key);
449 if (item == NULL) {
450 /* Handle KeyError only: */
451 if (!PyErr_ExceptionMatches(PyExc_KeyError))
452 goto error;
453
454 /* Clear the error and use zero: */
455 PyErr_Clear();
456 item = PyInt_FromLong(0L);
457 if (item == NULL)
458 goto error;
459 }
460 const_one = PyInt_FromLong(1L);
461 if (const_one == NULL)
462 goto error;
463
464 incremented_item = PyNumber_Add(item, const_one);
465 if (incremented_item == NULL)
466 goto error;
467
468 if (PyObject_SetItem(dict, key, incremented_item) < 0)
469 goto error;
470 rv = 0; /* Success */
471 /* Continue with cleanup code */
472
473 error:
474 /* Cleanup code, shared by success and failure path */
475
476 /* Use Py_XDECREF() to ignore NULL references */
477 Py_XDECREF(item);
478 Py_XDECREF(const_one);
479 Py_XDECREF(incremented_item);
480
481 return rv; /* -1 for error, 0 for success */
482}
483\end{verbatim}
484\ttindex{incr_item()}
485
486This example represents an endorsed use of the \keyword{goto} statement
487in C! It illustrates the use of
488\cfunction{PyErr_ExceptionMatches()}\ttindex{PyErr_ExceptionMatches()} and
489\cfunction{PyErr_Clear()}\ttindex{PyErr_Clear()} to
490handle specific exceptions, and the use of
491\cfunction{Py_XDECREF()}\ttindex{Py_XDECREF()} to
492dispose of owned references that may be \NULL{} (note the
493\character{X} in the name; \cfunction{Py_DECREF()} would crash when
494confronted with a \NULL{} reference). It is important that the
495variables used to hold owned references are initialized to \NULL{} for
496this to work; likewise, the proposed return value is initialized to
497\code{-1} (failure) and only set to success after the final call made
498is successful.
499
500
501\section{Embedding Python \label{embedding}}
502
503The one important task that only embedders (as opposed to extension
504writers) of the Python interpreter have to worry about is the
505initialization, and possibly the finalization, of the Python
506interpreter. Most functionality of the interpreter can only be used
507after the interpreter has been initialized.
508
509The basic initialization function is
510\cfunction{Py_Initialize()}\ttindex{Py_Initialize()}.
511This initializes the table of loaded modules, and creates the
512fundamental modules \module{__builtin__}\refbimodindex{__builtin__},
513\module{__main__}\refbimodindex{__main__}, \module{sys}\refbimodindex{sys},
514and \module{exceptions}.\refbimodindex{exceptions} It also initializes
515the module search path (\code{sys.path}).%
516\indexiii{module}{search}{path}
517\withsubitem{(in module sys)}{\ttindex{path}}
518
519\cfunction{Py_Initialize()} does not set the ``script argument list''
520(\code{sys.argv}). If this variable is needed by Python code that
521will be executed later, it must be set explicitly with a call to
522\code{PySys_SetArgv(\var{argc},
523\var{argv})}\ttindex{PySys_SetArgv()} subsequent to the call to
524\cfunction{Py_Initialize()}.
525
526On most systems (in particular, on \UNIX{} and Windows, although the
527details are slightly different),
528\cfunction{Py_Initialize()} calculates the module search path based
529upon its best guess for the location of the standard Python
530interpreter executable, assuming that the Python library is found in a
531fixed location relative to the Python interpreter executable. In
532particular, it looks for a directory named
533\file{lib/python\shortversion} relative to the parent directory where
534the executable named \file{python} is found on the shell command
535search path (the environment variable \envvar{PATH}).
536
537For instance, if the Python executable is found in
538\file{/usr/local/bin/python}, it will assume that the libraries are in
539\file{/usr/local/lib/python\shortversion}. (In fact, this particular path
540is also the ``fallback'' location, used when no executable file named
541\file{python} is found along \envvar{PATH}.) The user can override
542this behavior by setting the environment variable \envvar{PYTHONHOME},
543or insert additional directories in front of the standard path by
544setting \envvar{PYTHONPATH}.
545
546The embedding application can steer the search by calling
547\code{Py_SetProgramName(\var{file})}\ttindex{Py_SetProgramName()} \emph{before} calling
548\cfunction{Py_Initialize()}. Note that \envvar{PYTHONHOME} still
549overrides this and \envvar{PYTHONPATH} is still inserted in front of
550the standard path. An application that requires total control has to
551provide its own implementation of
552\cfunction{Py_GetPath()}\ttindex{Py_GetPath()},
553\cfunction{Py_GetPrefix()}\ttindex{Py_GetPrefix()},
554\cfunction{Py_GetExecPrefix()}\ttindex{Py_GetExecPrefix()}, and
555\cfunction{Py_GetProgramFullPath()}\ttindex{Py_GetProgramFullPath()} (all
556defined in \file{Modules/getpath.c}).
557
558Sometimes, it is desirable to ``uninitialize'' Python. For instance,
559the application may want to start over (make another call to
560\cfunction{Py_Initialize()}) or the application is simply done with its
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000561use of Python and wants to free memory allocated by Python. This
Fred Drake3adf79e2001-10-12 19:01:43 +0000562can be accomplished by calling \cfunction{Py_Finalize()}. The function
563\cfunction{Py_IsInitialized()}\ttindex{Py_IsInitialized()} returns
564true if Python is currently in the initialized state. More
565information about these functions is given in a later chapter.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +0000566Notice that \cfunction{Py_Finalize} does \emph{not} free all memory
567allocated by the Python interpreter, e.g. memory allocated by extension
568modules currently cannot be released.
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000569
570
571\section{Debugging Builds \label{debugging}}
572
573Python can be built with several macros to enable extra checks of the
574interpreter and extension modules. These checks tend to add a large
575amount of overhead to the runtime so they are not enabled by default.
576
577A full list of the various types of debugging builds is in the file
578\file{Misc/SpecialBuilds.txt} in the Python source distribution.
579Builds are available that support tracing of reference counts,
580debugging the memory allocator, or low-level profiling of the main
581interpreter loop. Only the most frequently-used builds will be
582described in the remainder of this section.
583
584Compiling the interpreter with the \csimplemacro{Py_DEBUG} macro
585defined produces what is generally meant by "a debug build" of Python.
586\csimplemacro{Py_DEBUG} is enabled in the \UNIX{} build by adding
587\longprogramopt{with-pydebug} to the \file{configure} command. It is also
588implied by the presence of the not-Python-specific
589\csimplemacro{_DEBUG} macro. When \csimplemacro{Py_DEBUG} is enabled
590in the \UNIX{} build, compiler optimization is disabled.
591
592In addition to the reference count debugging described below, the
593following extra checks are performed:
594
595\begin{itemize}
596 \item Extra checks are added to the object allocator.
597 \item Extra checks are added to the parser and compiler.
598 \item Downcasts from wide types to narrow types are checked for
599 loss of information.
600 \item A number of assertions are added to the dictionary and set
601 implementations. In addition, the set object acquires a
602 \method{test_c_api} method.
603 \item Sanity checks of the input arguments are added to frame
604 creation.
605 \item The storage for long ints is initialized with a known
606 invalid pattern to catch reference to uninitialized
607 digits.
608 \item Low-level tracing and extra exception checking are added
609 to the runtime virtual machine.
610 \item Extra checks are added to the memory arena implementation.
611 \item Extra debugging is added to the thread module.
612\end{itemize}
613
614There may be additional checks not mentioned here.
615
616Defining \csimplemacro{Py_TRACE_REFS} enables reference tracing. When
617defined, a circular doubly linked list of active objects is maintained
618by adding two extra fields to every \ctype{PyObject}. Total
619allocations are tracked as well. Upon exit, all existing references
620are printed. (In interactive mode this happens after every statement
621run by the interpreter.) Implied by \csimplemacro{Py_DEBUG}.
622
623Please refer to \file{Misc/SpecialBuilds.txt} in the Python source
624distribution for more detailed information.