blob: ff5106a1691524b9dae2325936cbbeef32952508 [file] [log] [blame]
Fred Drake211a2eb2004-03-22 21:44:43 +00001\documentclass{manual}
Greg Ward16aafcd2000-04-09 04:06:44 +00002\usepackage{distutils}
Greg Wardabc52162000-02-26 00:52:48 +00003
Greg Wardb6528972000-09-07 02:40:37 +00004% $Id$
5
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00006% TODO
7% Document extension.read_setup_file
8% Document build_clib command
9%
10
Greg Ward16aafcd2000-04-09 04:06:44 +000011\title{Distributing Python Modules}
Greg Wardabc52162000-02-26 00:52:48 +000012
Fred Drake20d47382004-01-23 15:23:49 +000013\input{boilerplate}
14
Fred Drake6fca7cc2004-03-23 18:43:03 +000015\author{Greg Ward\\
16 Anthony Baxter}
Fred Drakeb914ef02004-01-02 06:57:50 +000017\authoraddress{
18 \strong{Python Software Foundation}\\
19 Email: \email{distutils-sig@python.org}
20}
Greg Wardabc52162000-02-26 00:52:48 +000021
Greg Warde3cca262000-08-31 16:36:31 +000022\makeindex
Fred Drake6356fff2004-03-23 19:02:38 +000023\makemodindex
Greg Ward16aafcd2000-04-09 04:06:44 +000024
Greg Wardabc52162000-02-26 00:52:48 +000025\begin{document}
26
Greg Wardfacb8db2000-04-09 04:32:40 +000027\maketitle
Georg Brandlf33f5e92005-06-18 20:11:40 +000028
29\input{copyright}
30
Greg Warde3cca262000-08-31 16:36:31 +000031\begin{abstract}
32 \noindent
33 This document describes the Python Distribution Utilities
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +000034 (``Distutils'') from the module developer's point of view, describing
Greg Warde3cca262000-08-31 16:36:31 +000035 how to use the Distutils to make Python modules and extensions easily
36 available to a wider audience with very little overhead for
37 build/release/install mechanics.
38\end{abstract}
39
Raymond Hettinger68804312005-01-01 00:28:46 +000040% The ugly "%begin{latexonly}" pseudo-environment suppresses the table
Fred Drakea09262e2001-03-01 18:35:43 +000041% of contents for HTML generation.
42%
43%begin{latexonly}
Greg Wardfacb8db2000-04-09 04:32:40 +000044\tableofcontents
Fred Drakea09262e2001-03-01 18:35:43 +000045%end{latexonly}
46
Greg Ward16aafcd2000-04-09 04:06:44 +000047
Fred Drake211a2eb2004-03-22 21:44:43 +000048\chapter{An Introduction to Distutils}
Greg Warde78298a2000-04-28 17:12:24 +000049\label{intro}
Greg Ward16aafcd2000-04-09 04:06:44 +000050
Andrew M. Kuchling40df7102002-05-08 13:39:03 +000051This document covers using the Distutils to distribute your Python
52modules, concentrating on the role of developer/distributor: if
Fred Drake01df4532000-06-30 03:36:41 +000053you're looking for information on installing Python modules, you
54should refer to the \citetitle[../inst/inst.html]{Installing Python
55Modules} manual.
Greg Ward16aafcd2000-04-09 04:06:44 +000056
57
Greg Wardfacb8db2000-04-09 04:32:40 +000058\section{Concepts \& Terminology}
Greg Warde78298a2000-04-28 17:12:24 +000059\label{concepts}
Greg Ward16aafcd2000-04-09 04:06:44 +000060
61Using the Distutils is quite simple, both for module developers and for
62users/administrators installing third-party modules. As a developer,
Thomas Heller5f52f722001-02-19 17:48:03 +000063your responsibilities (apart from writing solid, well-documented and
Greg Ward16aafcd2000-04-09 04:06:44 +000064well-tested code, of course!) are:
65\begin{itemize}
66\item write a setup script (\file{setup.py} by convention)
67\item (optional) write a setup configuration file
68\item create a source distribution
69\item (optional) create one or more built (binary) distributions
70\end{itemize}
71Each of these tasks is covered in this document.
72
73Not all module developers have access to a multitude of platforms, so
74it's not always feasible to expect them to create a multitude of built
75distributions. It is hoped that a class of intermediaries, called
Greg Ward19c67f82000-06-24 01:33:16 +000076\emph{packagers}, will arise to address this need. Packagers will take
77source distributions released by module developers, build them on one or
78more platforms, and release the resulting built distributions. Thus,
79users on the most popular platforms will be able to install most popular
80Python module distributions in the most natural way for their platform,
81without having to run a single setup script or compile a line of code.
Greg Ward16aafcd2000-04-09 04:06:44 +000082
83
Fred Drake211a2eb2004-03-22 21:44:43 +000084\section{A Simple Example}
Greg Warde78298a2000-04-28 17:12:24 +000085\label{simple-example}
Greg Ward16aafcd2000-04-09 04:06:44 +000086
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +000087The setup script is usually quite simple, although since it's written
88in Python, there are no arbitrary limits to what you can do with it,
89though you should be careful about putting arbitrarily expensive
90operations in your setup script. Unlike, say, Autoconf-style configure
91scripts, the setup script may be run multiple times in the course of
Andrew M. Kuchlinge9a54a32003-05-13 15:02:06 +000092building and installing your module distribution.
Andrew M. Kuchling40df7102002-05-08 13:39:03 +000093
94If all you want to do is distribute a module called \module{foo},
95contained in a file \file{foo.py}, then your setup script can be as
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +000096simple as this:
Fred Drakea09262e2001-03-01 18:35:43 +000097
Greg Ward16aafcd2000-04-09 04:06:44 +000098\begin{verbatim}
99from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +0000100setup(name='foo',
101 version='1.0',
102 py_modules=['foo'],
103 )
Greg Ward16aafcd2000-04-09 04:06:44 +0000104\end{verbatim}
Greg Ward370248d2000-06-24 01:45:47 +0000105
Greg Ward16aafcd2000-04-09 04:06:44 +0000106Some observations:
107\begin{itemize}
Greg Ward370248d2000-06-24 01:45:47 +0000108\item most information that you supply to the Distutils is supplied as
Greg Wardfacb8db2000-04-09 04:32:40 +0000109 keyword arguments to the \function{setup()} function
Greg Ward16aafcd2000-04-09 04:06:44 +0000110\item those keyword arguments fall into two categories: package
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000111 metadata (name, version number) and information about what's in the
Greg Ward370248d2000-06-24 01:45:47 +0000112 package (a list of pure Python modules, in this case)
Greg Ward16aafcd2000-04-09 04:06:44 +0000113\item modules are specified by module name, not filename (the same will
114 hold true for packages and extensions)
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000115\item it's recommended that you supply a little more metadata, in
Greg Ward16aafcd2000-04-09 04:06:44 +0000116 particular your name, email address and a URL for the project
Greg Ward47f99a62000-09-04 20:07:15 +0000117 (see section~\ref{setup-script} for an example)
Greg Ward16aafcd2000-04-09 04:06:44 +0000118\end{itemize}
119
Greg Ward370248d2000-06-24 01:45:47 +0000120To create a source distribution for this module, you would create a
121setup script, \file{setup.py}, containing the above code, and run:
Fred Drakea09262e2001-03-01 18:35:43 +0000122
Greg Ward16aafcd2000-04-09 04:06:44 +0000123\begin{verbatim}
124python setup.py sdist
125\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000126
Fred Drakeeff9a872000-10-26 16:41:03 +0000127which will create an archive file (e.g., tarball on \UNIX, ZIP file on
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000128Windows) containing your setup script \file{setup.py}, and your module
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000129\file{foo.py}. The archive file will be named \file{foo-1.0.tar.gz} (or
130\file{.zip}), and will unpack into a directory \file{foo-1.0}.
Greg Ward16aafcd2000-04-09 04:06:44 +0000131
132If an end-user wishes to install your \module{foo} module, all she has
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000133to do is download \file{foo-1.0.tar.gz} (or \file{.zip}), unpack it,
134and---from the \file{foo-1.0} directory---run
Fred Drakea09262e2001-03-01 18:35:43 +0000135
Greg Ward16aafcd2000-04-09 04:06:44 +0000136\begin{verbatim}
137python setup.py install
138\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000139
Greg Ward16aafcd2000-04-09 04:06:44 +0000140which will ultimately copy \file{foo.py} to the appropriate directory
141for third-party modules in their Python installation.
142
143This simple example demonstrates some fundamental concepts of the
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000144Distutils. First, both developers and installers have the same basic
Greg Ward16aafcd2000-04-09 04:06:44 +0000145user interface, i.e. the setup script. The difference is which
146Distutils \emph{commands} they use: the \command{sdist} command is
147almost exclusively for module developers, while \command{install} is
148more often for installers (although most developers will want to install
149their own code occasionally).
150
Greg Ward16aafcd2000-04-09 04:06:44 +0000151If you want to make things really easy for your users, you can create
152one or more built distributions for them. For instance, if you are
153running on a Windows machine, and want to make things easy for other
154Windows users, you can create an executable installer (the most
155appropriate type of built distribution for this platform) with the
Greg Ward59d382e2000-05-26 01:04:47 +0000156\command{bdist\_wininst} command. For example:
Fred Drakea09262e2001-03-01 18:35:43 +0000157
Greg Ward16aafcd2000-04-09 04:06:44 +0000158\begin{verbatim}
Greg Ward59d382e2000-05-26 01:04:47 +0000159python setup.py bdist_wininst
Greg Ward16aafcd2000-04-09 04:06:44 +0000160\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000161
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000162will create an executable installer, \file{foo-1.0.win32.exe}, in the
Greg Ward1d8f57a2000-08-05 00:43:11 +0000163current directory.
Greg Ward16aafcd2000-04-09 04:06:44 +0000164
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000165Other useful built distribution formats are RPM, implemented by the
166\command{bdist\_rpm} command, Solaris \program{pkgtool}
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000167(\command{bdist\_pkgtool}), and HP-UX \program{swinstall}
168(\command{bdist_sdux}). For example, the following command will
169create an RPM file called \file{foo-1.0.noarch.rpm}:
Fred Drakea09262e2001-03-01 18:35:43 +0000170
Greg Ward1d8f57a2000-08-05 00:43:11 +0000171\begin{verbatim}
172python setup.py bdist_rpm
173\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000174
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000175(The \command{bdist\_rpm} command uses the \command{rpm} executable,
176therefore this has to be run on an RPM-based system such as Red Hat
177Linux, SuSE Linux, or Mandrake Linux.)
Greg Ward1d8f57a2000-08-05 00:43:11 +0000178
179You can find out what distribution formats are available at any time by
180running
Fred Drakea09262e2001-03-01 18:35:43 +0000181
Greg Ward1d8f57a2000-08-05 00:43:11 +0000182\begin{verbatim}
183python setup.py bdist --help-formats
184\end{verbatim}
Greg Ward16aafcd2000-04-09 04:06:44 +0000185
186
Fred Drake211a2eb2004-03-22 21:44:43 +0000187\section{General Python terminology}
Greg Warde78298a2000-04-28 17:12:24 +0000188\label{python-terms}
Greg Ward16aafcd2000-04-09 04:06:44 +0000189
190If you're reading this document, you probably have a good idea of what
191modules, extensions, and so forth are. Nevertheless, just to be sure
192that everyone is operating from a common starting point, we offer the
193following glossary of common Python terms:
194\begin{description}
195\item[module] the basic unit of code reusability in Python: a block of
Greg Ward1d8f57a2000-08-05 00:43:11 +0000196 code imported by some other code. Three types of modules concern us
197 here: pure Python modules, extension modules, and packages.
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000198
Greg Ward16aafcd2000-04-09 04:06:44 +0000199\item[pure Python module] a module written in Python and contained in a
200 single \file{.py} file (and possibly associated \file{.pyc} and/or
201 \file{.pyo} files). Sometimes referred to as a ``pure module.''
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000202
Greg Ward16aafcd2000-04-09 04:06:44 +0000203\item[extension module] a module written in the low-level language of
Fred Drake2884d6d2003-07-02 12:27:43 +0000204 the Python implementation: C/\Cpp{} for Python, Java for Jython.
Greg Ward16aafcd2000-04-09 04:06:44 +0000205 Typically contained in a single dynamically loadable pre-compiled
Fred Drakeeff9a872000-10-26 16:41:03 +0000206 file, e.g. a shared object (\file{.so}) file for Python extensions on
207 \UNIX, a DLL (given the \file{.pyd} extension) for Python extensions
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000208 on Windows, or a Java class file for Jython extensions. (Note that
Fred Drake2884d6d2003-07-02 12:27:43 +0000209 currently, the Distutils only handles C/\Cpp{} extensions for Python.)
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000210
Greg Ward16aafcd2000-04-09 04:06:44 +0000211\item[package] a module that contains other modules; typically contained
212 in a directory in the filesystem and distinguished from other
213 directories by the presence of a file \file{\_\_init\_\_.py}.
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000214
Greg Ward6153fa12000-05-26 02:24:28 +0000215\item[root package] the root of the hierarchy of packages. (This isn't
216 really a package, since it doesn't have an \file{\_\_init\_\_.py}
217 file. But we have to call it something.) The vast majority of the
218 standard library is in the root package, as are many small, standalone
219 third-party modules that don't belong to a larger module collection.
220 Unlike regular packages, modules in the root package can be found in
221 many directories: in fact, every directory listed in \code{sys.path}
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000222 contributes modules to the root package.
Greg Ward16aafcd2000-04-09 04:06:44 +0000223\end{description}
224
225
Fred Drake211a2eb2004-03-22 21:44:43 +0000226\section{Distutils-specific terminology}
Greg Warde78298a2000-04-28 17:12:24 +0000227\label{distutils-term}
Greg Ward16aafcd2000-04-09 04:06:44 +0000228
229The following terms apply more specifically to the domain of
230distributing Python modules using the Distutils:
231\begin{description}
232\item[module distribution] a collection of Python modules distributed
233 together as a single downloadable resource and meant to be installed
234 \emph{en masse}. Examples of some well-known module distributions are
235 Numeric Python, PyXML, PIL (the Python Imaging Library), or
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000236 mxBase. (This would be called a \emph{package}, except that term
Greg Ward59d382e2000-05-26 01:04:47 +0000237 is already taken in the Python context: a single module distribution
238 may contain zero, one, or many Python packages.)
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000239
Greg Ward16aafcd2000-04-09 04:06:44 +0000240\item[pure module distribution] a module distribution that contains only
241 pure Python modules and packages. Sometimes referred to as a ``pure
242 distribution.''
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000243
Greg Ward16aafcd2000-04-09 04:06:44 +0000244\item[non-pure module distribution] a module distribution that contains
245 at least one extension module. Sometimes referred to as a ``non-pure
246 distribution.''
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000247
Greg Ward16aafcd2000-04-09 04:06:44 +0000248\item[distribution root] the top-level directory of your source tree (or
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000249 source distribution); the directory where \file{setup.py} exists. Generally
250 \file{setup.py} will be run from this directory.
Greg Ward16aafcd2000-04-09 04:06:44 +0000251\end{description}
252
253
Fred Drake211a2eb2004-03-22 21:44:43 +0000254\chapter{Writing the Setup Script}
Greg Warde78298a2000-04-28 17:12:24 +0000255\label{setup-script}
Greg Ward16aafcd2000-04-09 04:06:44 +0000256
257The setup script is the centre of all activity in building,
258distributing, and installing modules using the Distutils. The main
259purpose of the setup script is to describe your module distribution to
Greg Wardd5767a52000-04-19 22:48:09 +0000260the Distutils, so that the various commands that operate on your modules
Greg Ward59d382e2000-05-26 01:04:47 +0000261do the right thing. As we saw in section~\ref{simple-example} above,
262the setup script consists mainly of a call to \function{setup()}, and
Greg Ward1bbe3292000-06-25 03:14:13 +0000263most information supplied to the Distutils by the module developer is
264supplied as keyword arguments to \function{setup()}.
Greg Ward16aafcd2000-04-09 04:06:44 +0000265
266Here's a slightly more involved example, which we'll follow for the next
267couple of sections: the Distutils' own setup script. (Keep in mind that
Greg Ward1d8f57a2000-08-05 00:43:11 +0000268although the Distutils are included with Python 1.6 and later, they also
269have an independent existence so that Python 1.5.2 users can use them to
270install other module distributions. The Distutils' own setup script,
271shown here, is used to install the package into Python 1.5.2.)
Greg Ward16aafcd2000-04-09 04:06:44 +0000272
273\begin{verbatim}
274#!/usr/bin/env python
275
276from distutils.core import setup
277
Fred Drake630e5bd2004-03-23 18:54:12 +0000278setup(name='Distutils',
279 version='1.0',
280 description='Python Distribution Utilities',
281 author='Greg Ward',
282 author_email='gward@python.net',
283 url='http://www.python.org/sigs/distutils-sig/',
Fred Drakea09262e2001-03-01 18:35:43 +0000284 packages=['distutils', 'distutils.command'],
285 )
Greg Ward16aafcd2000-04-09 04:06:44 +0000286\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000287
Greg Ward16aafcd2000-04-09 04:06:44 +0000288There are only two differences between this and the trivial one-file
Greg Warde78298a2000-04-28 17:12:24 +0000289distribution presented in section~\ref{simple-example}: more
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000290metadata, and the specification of pure Python modules by package,
Greg Ward16aafcd2000-04-09 04:06:44 +0000291rather than by module. This is important since the Distutils consist of
292a couple of dozen modules split into (so far) two packages; an explicit
293list of every module would be tedious to generate and difficult to
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000294maintain. For more information on the additional meta-data, see
295section~\ref{meta-data}.
Greg Ward16aafcd2000-04-09 04:06:44 +0000296
Greg Ward46b98e32000-04-14 01:53:36 +0000297Note that any pathnames (files or directories) supplied in the setup
Fred Drakeeff9a872000-10-26 16:41:03 +0000298script should be written using the \UNIX{} convention, i.e.
Greg Ward46b98e32000-04-14 01:53:36 +0000299slash-separated. The Distutils will take care of converting this
Greg Ward59d382e2000-05-26 01:04:47 +0000300platform-neutral representation into whatever is appropriate on your
Greg Ward46b98e32000-04-14 01:53:36 +0000301current platform before actually using the pathname. This makes your
302setup script portable across operating systems, which of course is one
303of the major goals of the Distutils. In this spirit, all pathnames in
Brett Cannon7706c2d2005-02-13 22:50:04 +0000304this document are slash-separated. (Mac OS 9 programmers should keep in
Greg Ward59d382e2000-05-26 01:04:47 +0000305mind that the \emph{absence} of a leading slash indicates a relative
Fred Drake781380c2004-02-19 23:17:46 +0000306path, the opposite of the Mac OS convention with colons.)
Greg Ward46b98e32000-04-14 01:53:36 +0000307
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000308This, of course, only applies to pathnames given to Distutils
Fred Drake2a046232003-03-31 16:23:09 +0000309functions. If you, for example, use standard Python functions such as
310\function{glob.glob()} or \function{os.listdir()} to specify files, you
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000311should be careful to write portable code instead of hardcoding path
312separators:
Fred Drakea09262e2001-03-01 18:35:43 +0000313
Thomas Heller5f52f722001-02-19 17:48:03 +0000314\begin{verbatim}
315 glob.glob(os.path.join('mydir', 'subdir', '*.html'))
316 os.listdir(os.path.join('mydir', 'subdir'))
317\end{verbatim}
Greg Ward16aafcd2000-04-09 04:06:44 +0000318
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000319
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000320\section{Listing whole packages}
Greg Ward2afffd42000-08-06 20:37:24 +0000321\label{listing-packages}
Greg Ward16aafcd2000-04-09 04:06:44 +0000322
323The \option{packages} option tells the Distutils to process (build,
324distribute, install, etc.) all pure Python modules found in each package
325mentioned in the \option{packages} list. In order to do this, of
326course, there has to be a correspondence between package names and
327directories in the filesystem. The default correspondence is the most
Greg Ward1ecc2512000-04-19 22:36:24 +0000328obvious one, i.e. package \module{distutils} is found in the directory
Greg Ward16aafcd2000-04-09 04:06:44 +0000329\file{distutils} relative to the distribution root. Thus, when you say
330\code{packages = ['foo']} in your setup script, you are promising that
331the Distutils will find a file \file{foo/\_\_init\_\_.py} (which might
332be spelled differently on your system, but you get the idea) relative to
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000333the directory where your setup script lives. If you break this
334promise, the Distutils will issue a warning but still process the broken
335package anyways.
Greg Ward16aafcd2000-04-09 04:06:44 +0000336
337If you use a different convention to lay out your source directory,
338that's no problem: you just have to supply the \option{package\_dir}
339option to tell the Distutils about your convention. For example, say
Greg Ward1d8f57a2000-08-05 00:43:11 +0000340you keep all Python source under \file{lib}, so that modules in the
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000341``root package'' (i.e., not in any package at all) are in
Greg Ward1d8f57a2000-08-05 00:43:11 +0000342\file{lib}, modules in the \module{foo} package are in \file{lib/foo},
343and so forth. Then you would put
Fred Drakea09262e2001-03-01 18:35:43 +0000344
Greg Ward16aafcd2000-04-09 04:06:44 +0000345\begin{verbatim}
346package_dir = {'': 'lib'}
347\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000348
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000349in your setup script. The keys to this dictionary are package names,
Greg Ward1d8f57a2000-08-05 00:43:11 +0000350and an empty package name stands for the root package. The values are
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000351directory names relative to your distribution root. In this case, when
Greg Ward1d8f57a2000-08-05 00:43:11 +0000352you say \code{packages = ['foo']}, you are promising that the file
Greg Ward16aafcd2000-04-09 04:06:44 +0000353\file{lib/foo/\_\_init\_\_.py} exists.
354
Greg Ward1ecc2512000-04-19 22:36:24 +0000355Another possible convention is to put the \module{foo} package right in
356\file{lib}, the \module{foo.bar} package in \file{lib/bar}, etc. This
Greg Ward16aafcd2000-04-09 04:06:44 +0000357would be written in the setup script as
Fred Drakea09262e2001-03-01 18:35:43 +0000358
Greg Ward16aafcd2000-04-09 04:06:44 +0000359\begin{verbatim}
360package_dir = {'foo': 'lib'}
361\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000362
Greg Ward59d382e2000-05-26 01:04:47 +0000363A \code{\var{package}: \var{dir}} entry in the \option{package\_dir}
364dictionary implicitly applies to all packages below \var{package}, so
365the \module{foo.bar} case is automatically handled here. In this
366example, having \code{packages = ['foo', 'foo.bar']} tells the Distutils
367to look for \file{lib/\_\_init\_\_.py} and
368\file{lib/bar/\_\_init\_\_.py}. (Keep in mind that although
369\option{package\_dir} applies recursively, you must explicitly list all
370packages in \option{packages}: the Distutils will \emph{not} recursively
371scan your source tree looking for any directory with an
372\file{\_\_init\_\_.py} file.)
Greg Ward16aafcd2000-04-09 04:06:44 +0000373
374
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000375\section{Listing individual modules}
Greg Warde78298a2000-04-28 17:12:24 +0000376\label{listing-modules}
Greg Ward16aafcd2000-04-09 04:06:44 +0000377
378For a small module distribution, you might prefer to list all modules
379rather than listing packages---especially the case of a single module
380that goes in the ``root package'' (i.e., no package at all). This
Greg Warde78298a2000-04-28 17:12:24 +0000381simplest case was shown in section~\ref{simple-example}; here is a
Greg Ward16aafcd2000-04-09 04:06:44 +0000382slightly more involved example:
Fred Drakea09262e2001-03-01 18:35:43 +0000383
Greg Ward16aafcd2000-04-09 04:06:44 +0000384\begin{verbatim}
385py_modules = ['mod1', 'pkg.mod2']
386\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000387
Greg Ward16aafcd2000-04-09 04:06:44 +0000388This describes two modules, one of them in the ``root'' package, the
Greg Wardd5767a52000-04-19 22:48:09 +0000389other in the \module{pkg} package. Again, the default package/directory
390layout implies that these two modules can be found in \file{mod1.py} and
391\file{pkg/mod2.py}, and that \file{pkg/\_\_init\_\_.py} exists as well.
Greg Ward2afffd42000-08-06 20:37:24 +0000392And again, you can override the package/directory correspondence using
393the \option{package\_dir} option.
Greg Ward59d382e2000-05-26 01:04:47 +0000394
395
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000396\section{Describing extension modules}
Greg Ward1365a302000-08-31 14:47:05 +0000397\label{describing-extensions}
Greg Ward59d382e2000-05-26 01:04:47 +0000398
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000399% XXX read over this section
Greg Ward2afffd42000-08-06 20:37:24 +0000400Just as writing Python extension modules is a bit more complicated than
401writing pure Python modules, describing them to the Distutils is a bit
402more complicated. Unlike pure modules, it's not enough just to list
403modules or packages and expect the Distutils to go out and find the
404right files; you have to specify the extension name, source file(s), and
405any compile/link requirements (include directories, libraries to link
406with, etc.).
407
408All of this is done through another keyword argument to
Andrew M. Kuchling8f6f08c2005-06-07 18:51:42 +0000409\function{setup()}, the \option{ext_modules} option. \option{ext_modules}
Greg Ward2afffd42000-08-06 20:37:24 +0000410is just a list of \class{Extension} instances, each of which describes a
411single extension module. Suppose your distribution includes a single
412extension, called \module{foo} and implemented by \file{foo.c}. If no
413additional instructions to the compiler/linker are needed, describing
414this extension is quite simple:
Fred Drakea09262e2001-03-01 18:35:43 +0000415
Greg Ward2afffd42000-08-06 20:37:24 +0000416\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +0000417Extension('foo', ['foo.c'])
Greg Ward2afffd42000-08-06 20:37:24 +0000418\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000419
Greg Ward2afffd42000-08-06 20:37:24 +0000420The \class{Extension} class can be imported from
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000421\module{distutils.core} along with \function{setup()}. Thus, the setup
Greg Ward2afffd42000-08-06 20:37:24 +0000422script for a module distribution that contains only this one extension
423and nothing else might be:
Fred Drakea09262e2001-03-01 18:35:43 +0000424
Greg Ward2afffd42000-08-06 20:37:24 +0000425\begin{verbatim}
426from distutils.core import setup, Extension
Fred Drake630e5bd2004-03-23 18:54:12 +0000427setup(name='foo',
428 version='1.0',
429 ext_modules=[Extension('foo', ['foo.c'])],
430 )
Greg Ward2afffd42000-08-06 20:37:24 +0000431\end{verbatim}
432
433The \class{Extension} class (actually, the underlying extension-building
Andrew M. Kuchlingda23c4f2001-02-17 00:38:48 +0000434machinery implemented by the \command{build\_ext} command) supports a
Greg Ward2afffd42000-08-06 20:37:24 +0000435great deal of flexibility in describing Python extensions, which is
436explained in the following sections.
437
438
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000439\subsection{Extension names and packages}
Greg Ward2afffd42000-08-06 20:37:24 +0000440
441The first argument to the \class{Extension} constructor is always the
442name of the extension, including any package names. For example,
Fred Drakea09262e2001-03-01 18:35:43 +0000443
Greg Ward2afffd42000-08-06 20:37:24 +0000444\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +0000445Extension('foo', ['src/foo1.c', 'src/foo2.c'])
Greg Ward2afffd42000-08-06 20:37:24 +0000446\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000447
Greg Ward2afffd42000-08-06 20:37:24 +0000448describes an extension that lives in the root package, while
Fred Drakea09262e2001-03-01 18:35:43 +0000449
Greg Ward2afffd42000-08-06 20:37:24 +0000450\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +0000451Extension('pkg.foo', ['src/foo1.c', 'src/foo2.c'])
Greg Ward2afffd42000-08-06 20:37:24 +0000452\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000453
Greg Ward2afffd42000-08-06 20:37:24 +0000454describes the same extension in the \module{pkg} package. The source
455files and resulting object code are identical in both cases; the only
456difference is where in the filesystem (and therefore where in Python's
457namespace hierarchy) the resulting extension lives.
458
459If you have a number of extensions all in the same package (or all under
460the same base package), use the \option{ext\_package} keyword argument
461to \function{setup()}. For example,
Fred Drakea09262e2001-03-01 18:35:43 +0000462
Greg Ward2afffd42000-08-06 20:37:24 +0000463\begin{verbatim}
464setup(...
Fred Drake630e5bd2004-03-23 18:54:12 +0000465 ext_package='pkg',
466 ext_modules=[Extension('foo', ['foo.c']),
467 Extension('subpkg.bar', ['bar.c'])],
Greg Ward2afffd42000-08-06 20:37:24 +0000468 )
469\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000470
Greg Ward2afffd42000-08-06 20:37:24 +0000471will compile \file{foo.c} to the extension \module{pkg.foo}, and
472\file{bar.c} to \module{pkg.subpkg.bar}.
473
474
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000475\subsection{Extension source files}
Greg Ward2afffd42000-08-06 20:37:24 +0000476
477The second argument to the \class{Extension} constructor is a list of
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000478source files. Since the Distutils currently only support C, \Cpp, and
479Objective-C extensions, these are normally C/\Cpp/Objective-C source
480files. (Be sure to use appropriate extensions to distinguish \Cpp\
481source files: \file{.cc} and \file{.cpp} seem to be recognized by both
482\UNIX{} and Windows compilers.)
Greg Ward2afffd42000-08-06 20:37:24 +0000483
484However, you can also include SWIG interface (\file{.i}) files in the
485list; the \command{build\_ext} command knows how to deal with SWIG
486extensions: it will run SWIG on the interface file and compile the
Fred Drake2884d6d2003-07-02 12:27:43 +0000487resulting C/\Cpp{} file into your extension.
Greg Ward2afffd42000-08-06 20:37:24 +0000488
Guido van Rossum360e4b82007-05-14 22:51:27 +0000489\XXX{SWIG support is rough around the edges and largely untested!}
490
491This warning notwithstanding, options to SWIG can be currently passed
492like this:
493
494\begin{verbatim}
495setup(...
496 ext_modules=[Extension('_foo', ['foo.i'],
497 swig_opts=['-modern', '-I../include'])],
498 py_modules=['foo'],
499 )
500\end{verbatim}
501
502Or on the commandline like this:
503
504\begin{verbatim}
505> python setup.py build_ext --swig-opts="-modern -I../include"
506\end{verbatim}
Greg Ward2afffd42000-08-06 20:37:24 +0000507
508On some platforms, you can include non-source files that are processed
509by the compiler and included in your extension. Currently, this just
Thomas Heller5f52f722001-02-19 17:48:03 +0000510means Windows message text (\file{.mc}) files and resource definition
Fred Drake2884d6d2003-07-02 12:27:43 +0000511(\file{.rc}) files for Visual \Cpp. These will be compiled to binary resource
Thomas Heller5f52f722001-02-19 17:48:03 +0000512(\file{.res}) files and linked into the executable.
Greg Ward2afffd42000-08-06 20:37:24 +0000513
514
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000515\subsection{Preprocessor options}
Greg Ward2afffd42000-08-06 20:37:24 +0000516
517Three optional arguments to \class{Extension} will help if you need to
518specify include directories to search or preprocessor macros to
519define/undefine: \code{include\_dirs}, \code{define\_macros}, and
520\code{undef\_macros}.
521
522For example, if your extension requires header files in the
523\file{include} directory under your distribution root, use the
524\code{include\_dirs} option:
Fred Drakea09262e2001-03-01 18:35:43 +0000525
Greg Ward2afffd42000-08-06 20:37:24 +0000526\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +0000527Extension('foo', ['foo.c'], include_dirs=['include'])
Greg Ward2afffd42000-08-06 20:37:24 +0000528\end{verbatim}
529
530You can specify absolute directories there; if you know that your
Fred Drakeeff9a872000-10-26 16:41:03 +0000531extension will only be built on \UNIX{} systems with X11R6 installed to
Greg Ward2afffd42000-08-06 20:37:24 +0000532\file{/usr}, you can get away with
Fred Drakea09262e2001-03-01 18:35:43 +0000533
Greg Ward2afffd42000-08-06 20:37:24 +0000534\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +0000535Extension('foo', ['foo.c'], include_dirs=['/usr/include/X11'])
Greg Ward2afffd42000-08-06 20:37:24 +0000536\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000537
Greg Ward2afffd42000-08-06 20:37:24 +0000538You should avoid this sort of non-portable usage if you plan to
Greg Ward58437f22002-05-10 14:40:22 +0000539distribute your code: it's probably better to write C code like
540\begin{verbatim}
541#include <X11/Xlib.h>
542\end{verbatim}
Greg Ward2afffd42000-08-06 20:37:24 +0000543
544If you need to include header files from some other Python extension,
Greg Ward58437f22002-05-10 14:40:22 +0000545you can take advantage of the fact that header files are installed in a
546consistent way by the Distutils \command{install\_header} command. For
547example, the Numerical Python header files are installed (on a standard
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000548\UNIX{} installation) to \file{/usr/local/include/python1.5/Numerical}.
Greg Ward58437f22002-05-10 14:40:22 +0000549(The exact location will differ according to your platform and Python
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000550installation.) Since the Python include
Greg Ward58437f22002-05-10 14:40:22 +0000551directory---\file{/usr/local/include/python1.5} in this case---is always
552included in the search path when building Python extensions, the best
553approach is to write C code like
554\begin{verbatim}
555#include <Numerical/arrayobject.h>
556\end{verbatim}
557If you must put the \file{Numerical} include directory right into your
558header search path, though, you can find that directory using the
Fred Drake630e5bd2004-03-23 18:54:12 +0000559Distutils \refmodule{distutils.sysconfig} module:
Fred Drakea09262e2001-03-01 18:35:43 +0000560
Greg Ward2afffd42000-08-06 20:37:24 +0000561\begin{verbatim}
562from distutils.sysconfig import get_python_inc
Fred Drake630e5bd2004-03-23 18:54:12 +0000563incdir = os.path.join(get_python_inc(plat_specific=1), 'Numerical')
Greg Ward2afffd42000-08-06 20:37:24 +0000564setup(...,
Fred Drake630e5bd2004-03-23 18:54:12 +0000565 Extension(..., include_dirs=[incdir]),
566 )
Greg Ward2afffd42000-08-06 20:37:24 +0000567\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000568
Greg Ward2afffd42000-08-06 20:37:24 +0000569Even though this is quite portable---it will work on any Python
570installation, regardless of platform---it's probably easier to just
571write your C code in the sensible way.
572
573You can define and undefine pre-processor macros with the
574\code{define\_macros} and \code{undef\_macros} options.
575\code{define\_macros} takes a list of \code{(name, value)} tuples, where
576\code{name} is the name of the macro to define (a string) and
577\code{value} is its value: either a string or \code{None}. (Defining a
578macro \code{FOO} to \code{None} is the equivalent of a bare
579\code{\#define FOO} in your C source: with most compilers, this sets
580\code{FOO} to the string \code{1}.) \code{undef\_macros} is just
581a list of macros to undefine.
582
583For example:
Fred Drakea09262e2001-03-01 18:35:43 +0000584
Greg Ward2afffd42000-08-06 20:37:24 +0000585\begin{verbatim}
586Extension(...,
Thomas Heller95a97d52003-10-08 12:01:33 +0000587 define_macros=[('NDEBUG', '1'),
588 ('HAVE_STRFTIME', None)],
Greg Ward2afffd42000-08-06 20:37:24 +0000589 undef_macros=['HAVE_FOO', 'HAVE_BAR'])
590\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000591
Greg Ward2afffd42000-08-06 20:37:24 +0000592is the equivalent of having this at the top of every C source file:
Fred Drakea09262e2001-03-01 18:35:43 +0000593
Greg Ward2afffd42000-08-06 20:37:24 +0000594\begin{verbatim}
595#define NDEBUG 1
596#define HAVE_STRFTIME
597#undef HAVE_FOO
598#undef HAVE_BAR
599\end{verbatim}
600
601
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000602\subsection{Library options}
Greg Ward2afffd42000-08-06 20:37:24 +0000603
604You can also specify the libraries to link against when building your
605extension, and the directories to search for those libraries. The
606\code{libraries} option is a list of libraries to link against,
607\code{library\_dirs} is a list of directories to search for libraries at
608link-time, and \code{runtime\_library\_dirs} is a list of directories to
609search for shared (dynamically loaded) libraries at run-time.
610
611For example, if you need to link against libraries known to be in the
612standard library search path on target systems
Fred Drakea09262e2001-03-01 18:35:43 +0000613
Greg Ward2afffd42000-08-06 20:37:24 +0000614\begin{verbatim}
615Extension(...,
Fred Drake630e5bd2004-03-23 18:54:12 +0000616 libraries=['gdbm', 'readline'])
Greg Ward2afffd42000-08-06 20:37:24 +0000617\end{verbatim}
618
619If you need to link with libraries in a non-standard location, you'll
620have to include the location in \code{library\_dirs}:
Fred Drakea09262e2001-03-01 18:35:43 +0000621
Greg Ward2afffd42000-08-06 20:37:24 +0000622\begin{verbatim}
623Extension(...,
Fred Drake630e5bd2004-03-23 18:54:12 +0000624 library_dirs=['/usr/X11R6/lib'],
625 libraries=['X11', 'Xt'])
Greg Ward2afffd42000-08-06 20:37:24 +0000626\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +0000627
Greg Ward2afffd42000-08-06 20:37:24 +0000628(Again, this sort of non-portable construct should be avoided if you
629intend to distribute your code.)
630
Thomas Heller5f52f722001-02-19 17:48:03 +0000631\XXX{Should mention clib libraries here or somewhere else!}
632
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000633\subsection{Other options}
Thomas Heller5f52f722001-02-19 17:48:03 +0000634
635There are still some other options which can be used to handle special
636cases.
637
638The \option{extra\_objects} option is a list of object files to be passed
639to the linker. These files must not have extensions, as the default
640extension for the compiler is used.
641
642\option{extra\_compile\_args} and \option{extra\_link\_args} can be used
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000643to specify additional command line options for the respective compiler and
644linker command lines.
Thomas Heller5f52f722001-02-19 17:48:03 +0000645
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000646\option{export\_symbols} is only useful on Windows. It can contain a list
Thomas Heller5f52f722001-02-19 17:48:03 +0000647of symbols (functions or variables) to be exported. This option
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000648is not needed when building compiled extensions: Distutils
649will automatically add \code{initmodule}
650to the list of exported symbols.
Thomas Heller5f52f722001-02-19 17:48:03 +0000651
Fred Drakedb7b0022005-03-20 22:19:47 +0000652\section{Relationships between Distributions and Packages}
653
654A distribution may relate to packages in three specific ways:
655
656\begin{enumerate}
657 \item It can require packages or modules.
658
659 \item It can provide packages or modules.
660
661 \item It can obsolete packages or modules.
662\end{enumerate}
663
664These relationships can be specified using keyword arguments to the
665\function{distutils.core.setup()} function.
666
667Dependencies on other Python modules and packages can be specified by
668supplying the \var{requires} keyword argument to \function{setup()}.
669The value must be a list of strings. Each string specifies a package
670that is required, and optionally what versions are sufficient.
671
672To specify that any version of a module or package is required, the
673string should consist entirely of the module or package name.
674Examples include \code{'mymodule'} and \code{'xml.parsers.expat'}.
675
676If specific versions are required, a sequence of qualifiers can be
677supplied in parentheses. Each qualifier may consist of a comparison
678operator and a version number. The accepted comparison operators are:
679
680\begin{verbatim}
681< > ==
682<= >= !=
683\end{verbatim}
684
685These can be combined by using multiple qualifiers separated by commas
686(and optional whitespace). In this case, all of the qualifiers must
687be matched; a logical AND is used to combine the evaluations.
688
689Let's look at a bunch of examples:
690
691\begin{tableii}{l|l}{code}{Requires Expression}{Explanation}
692 \lineii{==1.0} {Only version \code{1.0} is compatible}
693 \lineii{>1.0, !=1.5.1, <2.0} {Any version after \code{1.0} and before
694 \code{2.0} is compatible, except
695 \code{1.5.1}}
696\end{tableii}
697
698Now that we can specify dependencies, we also need to be able to
699specify what we provide that other distributions can require. This is
700done using the \var{provides} keyword argument to \function{setup()}.
701The value for this keyword is a list of strings, each of which names a
702Python module or package, and optionally identifies the version. If
703the version is not specified, it is assumed to match that of the
704distribution.
705
706Some examples:
707
708\begin{tableii}{l|l}{code}{Provides Expression}{Explanation}
709 \lineii{mypkg} {Provide \code{mypkg}, using the distribution version}
Thomas Woutersb2137042007-02-01 18:02:27 +0000710 \lineii{mypkg (1.1)} {Provide \code{mypkg} version 1.1, regardless of the
Fred Drakedb7b0022005-03-20 22:19:47 +0000711 distribution version}
712\end{tableii}
713
714A package can declare that it obsoletes other packages using the
715\var{obsoletes} keyword argument. The value for this is similar to
716that of the \var{requires} keyword: a list of strings giving module or
717package specifiers. Each specifier consists of a module or package
718name optionally followed by one or more version qualifiers. Version
719qualifiers are given in parentheses after the module or package name.
720
721The versions identified by the qualifiers are those that are obsoleted
722by the distribution being described. If no qualifiers are given, all
723versions of the named module or package are understood to be
724obsoleted.
725
726
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000727\section{Installing Scripts}
Fred Drakedb7b0022005-03-20 22:19:47 +0000728
Thomas Heller5f52f722001-02-19 17:48:03 +0000729So far we have been dealing with pure and non-pure Python modules,
730which are usually not run by themselves but imported by scripts.
731
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000732Scripts are files containing Python source code, intended to be
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000733started from the command line. Scripts don't require Distutils to do
734anything very complicated. The only clever feature is that if the
735first line of the script starts with \code{\#!} and contains the word
736``python'', the Distutils will adjust the first line to refer to the
Martin v. Löwis9f5c0c42004-08-25 11:37:43 +0000737current interpreter location. By default, it is replaced with the
Fred Drakee3a1b482004-08-25 14:01:32 +0000738current interpreter location. The \longprogramopt{executable} (or
739\programopt{-e}) option will allow the interpreter path to be
740explicitly overridden.
Thomas Heller5f52f722001-02-19 17:48:03 +0000741
742The \option{scripts} option simply is a list of files to be handled
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000743in this way. From the PyXML setup script:
744
745\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +0000746setup(...
747 scripts=['scripts/xmlproc_parse', 'scripts/xmlproc_val']
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000748 )
749\end{verbatim}
Thomas Heller5f52f722001-02-19 17:48:03 +0000750
751
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000752\section{Installing Package Data}
Fred Drake0eb32a62004-06-11 21:50:33 +0000753
754Often, additional files need to be installed into a package. These
755files are often data that's closely related to the package's
756implementation, or text files containing documentation that might be
757of interest to programmers using the package. These files are called
758\dfn{package data}.
759
760Package data can be added to packages using the \code{package_data}
761keyword argument to the \function{setup()} function. The value must
762be a mapping from package name to a list of relative path names that
763should be copied into the package. The paths are interpreted as
764relative to the directory containing the package (information from the
765\code{package_dir} mapping is used if appropriate); that is, the files
766are expected to be part of the package in the source directories.
767They may contain glob patterns as well.
768
769The path names may contain directory portions; any necessary
770directories will be created in the installation.
771
772For example, if a package should contain a subdirectory with several
773data files, the files can be arranged like this in the source tree:
774
775\begin{verbatim}
776setup.py
777src/
778 mypkg/
779 __init__.py
780 module.py
781 data/
782 tables.dat
783 spoons.dat
784 forks.dat
785\end{verbatim}
786
787The corresponding call to \function{setup()} might be:
788
789\begin{verbatim}
790setup(...,
791 packages=['mypkg'],
792 package_dir={'mypkg': 'src/mypkg'},
Thomas Hellerdd6d2072004-06-18 17:31:23 +0000793 package_data={'mypkg': ['data/*.dat']},
Fred Drake0eb32a62004-06-11 21:50:33 +0000794 )
795\end{verbatim}
796
797
798\versionadded{2.4}
799
800
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000801\section{Installing Additional Files}
Fred Drakea09262e2001-03-01 18:35:43 +0000802
Thomas Heller5f52f722001-02-19 17:48:03 +0000803The \option{data\_files} option can be used to specify additional
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000804files needed by the module distribution: configuration files, message
805catalogs, data files, anything which doesn't fit in the previous
806categories.
Thomas Heller5f52f722001-02-19 17:48:03 +0000807
Fred Drake632bda32002-03-08 22:02:06 +0000808\option{data\_files} specifies a sequence of (\var{directory},
809\var{files}) pairs in the following way:
Fred Drakea09262e2001-03-01 18:35:43 +0000810
Thomas Heller5f52f722001-02-19 17:48:03 +0000811\begin{verbatim}
812setup(...
813 data_files=[('bitmaps', ['bm/b1.gif', 'bm/b2.gif']),
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +0000814 ('config', ['cfg/data.cfg']),
815 ('/etc/init.d', ['init-script'])]
816 )
Thomas Heller5f52f722001-02-19 17:48:03 +0000817\end{verbatim}
818
819Note that you can specify the directory names where the data files
820will be installed, but you cannot rename the data files themselves.
821
Fred Drake632bda32002-03-08 22:02:06 +0000822Each (\var{directory}, \var{files}) pair in the sequence specifies the
823installation directory and the files to install there. If
824\var{directory} is a relative path, it is interpreted relative to the
825installation prefix (Python's \code{sys.prefix} for pure-Python
826packages, \code{sys.exec_prefix} for packages that contain extension
827modules). Each file name in \var{files} is interpreted relative to
828the \file{setup.py} script at the top of the package source
829distribution. No directory information from \var{files} is used to
830determine the final location of the installed file; only the name of
831the file is used.
832
Thomas Heller5f52f722001-02-19 17:48:03 +0000833You can specify the \option{data\_files} options as a simple sequence
834of files without specifying a target directory, but this is not recommended,
835and the \command{install} command will print a warning in this case.
836To install data files directly in the target directory, an empty
837string should be given as the directory.
Greg Ward16aafcd2000-04-09 04:06:44 +0000838
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000839\section{Additional meta-data}
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000840\label{meta-data}
841
842The setup script may include additional meta-data beyond the name and
843version. This information includes:
844
Fred Drakec440af52003-04-25 16:43:28 +0000845\begin{tableiv}{l|l|l|c}{code}%
846 {Meta-Data}{Description}{Value}{Notes}
847 \lineiv{name}{name of the package}
848 {short string}{(1)}
849 \lineiv{version}{version of this release}
850 {short string}{(1)(2)}
851 \lineiv{author}{package author's name}
852 {short string}{(3)}
853 \lineiv{author_email}{email address of the package author}
854 {email address}{(3)}
855 \lineiv{maintainer}{package maintainer's name}
856 {short string}{(3)}
857 \lineiv{maintainer_email}{email address of the package maintainer}
858 {email address}{(3)}
859 \lineiv{url}{home page for the package}
860 {URL}{(1)}
861 \lineiv{description}{short, summary description of the package}
862 {short string}{}
863 \lineiv{long_description}{longer description of the package}
864 {long string}{}
865 \lineiv{download_url}{location where the package may be downloaded}
866 {URL}{(4)}
Thomas Wouters73e5a5b2006-06-08 15:35:45 +0000867 \lineiv{classifiers}{a list of classifiers}
Fred Drakec440af52003-04-25 16:43:28 +0000868 {list of strings}{(4)}
869\end{tableiv}
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000870
871\noindent Notes:
872\begin{description}
Fred Drakec440af52003-04-25 16:43:28 +0000873\item[(1)] These fields are required.
874\item[(2)] It is recommended that versions take the form
875 \emph{major.minor\optional{.patch\optional{.sub}}}.
876\item[(3)] Either the author or the maintainer must be identified.
877\item[(4)] These fields should not be used if your package is to be
878 compatible with Python versions prior to 2.2.3 or 2.3. The list is
879 available from the \ulink{PyPI website}{http://www.python.org/pypi}.
880
Fred Drake630e5bd2004-03-23 18:54:12 +0000881\item['short string'] A single line of text, not more than 200 characters.
882\item['long string'] Multiple lines of plain text in reStructuredText
Fred Drakec440af52003-04-25 16:43:28 +0000883 format (see \url{http://docutils.sf.net/}).
Fred Drake630e5bd2004-03-23 18:54:12 +0000884\item['list of strings'] See below.
Fred Drakec440af52003-04-25 16:43:28 +0000885\end{description}
886
887None of the string values may be Unicode.
888
889Encoding the version information is an art in itself. Python packages
890generally adhere to the version format
891\emph{major.minor\optional{.patch}\optional{sub}}. The major number is
8920 for
893initial, experimental releases of software. It is incremented for
894releases that represent major milestones in a package. The minor
895number is incremented when important new features are added to the
896package. The patch number increments when bug-fix releases are
897made. Additional trailing version information is sometimes used to
898indicate sub-releases. These are "a1,a2,...,aN" (for alpha releases,
899where functionality and API may change), "b1,b2,...,bN" (for beta
900releases, which only fix bugs) and "pr1,pr2,...,prN" (for final
901pre-release release testing). Some examples:
902
903\begin{description}
904\item[0.1.0] the first, experimental release of a package
905\item[1.0.1a2] the second alpha release of the first patch version of 1.0
906\end{description}
907
908\option{classifiers} are specified in a python list:
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000909
910\begin{verbatim}
911setup(...
Fred Drake630e5bd2004-03-23 18:54:12 +0000912 classifiers=[
Fred Drake2a046232003-03-31 16:23:09 +0000913 'Development Status :: 4 - Beta',
914 'Environment :: Console',
915 'Environment :: Web Environment',
916 'Intended Audience :: End Users/Desktop',
917 'Intended Audience :: Developers',
918 'Intended Audience :: System Administrators',
919 'License :: OSI Approved :: Python Software Foundation License',
920 'Operating System :: MacOS :: MacOS X',
921 'Operating System :: Microsoft :: Windows',
922 'Operating System :: POSIX',
923 'Programming Language :: Python',
924 'Topic :: Communications :: Email',
925 'Topic :: Office/Business',
926 'Topic :: Software Development :: Bug Tracking',
927 ],
Fred Drake2a046232003-03-31 16:23:09 +0000928 )
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000929\end{verbatim}
930
Fred Drakec440af52003-04-25 16:43:28 +0000931If you wish to include classifiers in your \file{setup.py} file and also
932wish to remain backwards-compatible with Python releases prior to 2.2.3,
933then you can include the following code fragment in your \file{setup.py}
Fred Drake630e5bd2004-03-23 18:54:12 +0000934before the \function{setup()} call.
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000935
936\begin{verbatim}
Fred Drakec440af52003-04-25 16:43:28 +0000937# patch distutils if it can't cope with the "classifiers" or
938# "download_url" keywords
Brett Cannon076b7322005-11-02 22:58:12 +0000939from sys import version
940if version < '2.2.3':
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000941 from distutils.dist import DistributionMetadata
942 DistributionMetadata.classifiers = None
Fred Drake2a046232003-03-31 16:23:09 +0000943 DistributionMetadata.download_url = None
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +0000944\end{verbatim}
945
Greg Ward16aafcd2000-04-09 04:06:44 +0000946
Neal Norwitz2e56c8a2004-08-13 02:56:16 +0000947\section{Debugging the setup script}
Thomas Heller675580f2003-06-30 19:33:29 +0000948
949Sometimes things go wrong, and the setup script doesn't do what the
950developer wants.
951
952Distutils catches any exceptions when running the setup script, and
953print a simple error message before the script is terminated. The
954motivation for this behaviour is to not confuse administrators who
955don't know much about Python and are trying to install a package. If
956they get a big long traceback from deep inside the guts of Distutils,
957they may think the package or the Python installation is broken
958because they don't read all the way down to the bottom and see that
959it's a permission problem.
960
961On the other hand, this doesn't help the developer to find the cause
962of the failure. For this purpose, the DISTUTILS_DEBUG environment
963variable can be set to anything except an empty string, and distutils
964will now print detailed information what it is doing, and prints the
Martin v. Löwis95cf84a2003-10-19 07:32:24 +0000965full traceback in case an exception occurs.
Thomas Heller675580f2003-06-30 19:33:29 +0000966
Fred Drake211a2eb2004-03-22 21:44:43 +0000967\chapter{Writing the Setup Configuration File}
Greg Warde78298a2000-04-28 17:12:24 +0000968\label{setup-config}
Greg Ward16aafcd2000-04-09 04:06:44 +0000969
Greg Ward16aafcd2000-04-09 04:06:44 +0000970Often, it's not possible to write down everything needed to build a
Greg Ward47f99a62000-09-04 20:07:15 +0000971distribution \emph{a priori}: you may need to get some information from
972the user, or from the user's system, in order to proceed. As long as
973that information is fairly simple---a list of directories to search for
974C header files or libraries, for example---then providing a
975configuration file, \file{setup.cfg}, for users to edit is a cheap and
976easy way to solicit it. Configuration files also let you provide
977default values for any command option, which the installer can then
978override either on the command-line or by editing the config file.
Greg Ward16aafcd2000-04-09 04:06:44 +0000979
Andrew M. Kuchling40df7102002-05-08 13:39:03 +0000980% (If you have more advanced needs, such as determining which extensions
981% to build based on what capabilities are present on the target system,
982% then you need the Distutils ``auto-configuration'' facility. This
983% started to appear in Distutils 0.9 but, as of this writing, isn't mature
984% or stable enough yet for real-world use.)
Greg Ward16aafcd2000-04-09 04:06:44 +0000985
Greg Ward47f99a62000-09-04 20:07:15 +0000986The setup configuration file is a useful middle-ground between the setup
987script---which, ideally, would be opaque to installers\footnote{This
988 ideal probably won't be achieved until auto-configuration is fully
989 supported by the Distutils.}---and the command-line to the setup
990script, which is outside of your control and entirely up to the
991installer. In fact, \file{setup.cfg} (and any other Distutils
992configuration files present on the target system) are processed after
993the contents of the setup script, but before the command-line. This has
994several useful consequences:
995\begin{itemize}
996\item installers can override some of what you put in \file{setup.py} by
997 editing \file{setup.cfg}
998\item you can provide non-standard defaults for options that are not
999 easily set in \file{setup.py}
1000\item installers can override anything in \file{setup.cfg} using the
1001 command-line options to \file{setup.py}
1002\end{itemize}
1003
1004The basic syntax of the configuration file is simple:
Fred Drakea09262e2001-03-01 18:35:43 +00001005
Greg Ward47f99a62000-09-04 20:07:15 +00001006\begin{verbatim}
1007[command]
1008option=value
1009...
1010\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001011
Greg Ward47f99a62000-09-04 20:07:15 +00001012where \var{command} is one of the Distutils commands (e.g.
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001013\command{build\_py}, \command{install}), and \var{option} is one of
1014the options that command supports. Any number of options can be
1015supplied for each command, and any number of command sections can be
1016included in the file. Blank lines are ignored, as are comments, which
1017run from a \character{\#} character until the end of the line. Long
1018option values can be split across multiple lines simply by indenting
1019the continuation lines.
Greg Ward47f99a62000-09-04 20:07:15 +00001020
1021You can find out the list of options supported by a particular command
1022with the universal \longprogramopt{help} option, e.g.
Fred Drakea09262e2001-03-01 18:35:43 +00001023
Greg Ward47f99a62000-09-04 20:07:15 +00001024\begin{verbatim}
1025> python setup.py --help build_ext
1026[...]
1027Options for 'build_ext' command:
1028 --build-lib (-b) directory for compiled extension modules
1029 --build-temp (-t) directory for temporary files (build by-products)
1030 --inplace (-i) ignore build-lib and put compiled extensions into the
1031 source directory alongside your pure Python modules
1032 --include-dirs (-I) list of directories to search for header files
1033 --define (-D) C preprocessor macros to define
1034 --undef (-U) C preprocessor macros to undefine
Guido van Rossum360e4b82007-05-14 22:51:27 +00001035 --swig-opts list of SWIG command line options
Greg Ward47f99a62000-09-04 20:07:15 +00001036[...]
1037\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001038
Greg Ward47f99a62000-09-04 20:07:15 +00001039Note that an option spelled \longprogramopt{foo-bar} on the command-line
1040is spelled \option{foo\_bar} in configuration files.
1041
1042For example, say you want your extensions to be built
1043``in-place''---that is, you have an extension \module{pkg.ext}, and you
Fred Drakeeff9a872000-10-26 16:41:03 +00001044want the compiled extension file (\file{ext.so} on \UNIX, say) to be put
Greg Ward47f99a62000-09-04 20:07:15 +00001045in the same source directory as your pure Python modules
1046\module{pkg.mod1} and \module{pkg.mod2}. You can always use the
1047\longprogramopt{inplace} option on the command-line to ensure this:
Fred Drakea09262e2001-03-01 18:35:43 +00001048
Greg Ward47f99a62000-09-04 20:07:15 +00001049\begin{verbatim}
1050python setup.py build_ext --inplace
1051\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001052
Greg Ward47f99a62000-09-04 20:07:15 +00001053But this requires that you always specify the \command{build\_ext}
1054command explicitly, and remember to provide \longprogramopt{inplace}.
1055An easier way is to ``set and forget'' this option, by encoding it in
1056\file{setup.cfg}, the configuration file for this distribution:
Fred Drakea09262e2001-03-01 18:35:43 +00001057
Greg Ward47f99a62000-09-04 20:07:15 +00001058\begin{verbatim}
1059[build_ext]
1060inplace=1
1061\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001062
Greg Ward47f99a62000-09-04 20:07:15 +00001063This will affect all builds of this module distribution, whether or not
Raymond Hettinger68804312005-01-01 00:28:46 +00001064you explicitly specify \command{build\_ext}. If you include
Greg Ward47f99a62000-09-04 20:07:15 +00001065\file{setup.cfg} in your source distribution, it will also affect
1066end-user builds---which is probably a bad idea for this option, since
1067always building extensions in-place would break installation of the
1068module distribution. In certain peculiar cases, though, modules are
1069built right in their installation directory, so this is conceivably a
1070useful ability. (Distributing extensions that expect to be built in
1071their installation directory is almost always a bad idea, though.)
1072
1073Another example: certain commands take a lot of options that don't
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001074change from run to run; for example, \command{bdist\_rpm} needs to know
Greg Ward47f99a62000-09-04 20:07:15 +00001075everything required to generate a ``spec'' file for creating an RPM
1076distribution. Some of this information comes from the setup script, and
1077some is automatically generated by the Distutils (such as the list of
1078files installed). But some of it has to be supplied as options to
1079\command{bdist\_rpm}, which would be very tedious to do on the
1080command-line for every run. Hence, here is a snippet from the
1081Distutils' own \file{setup.cfg}:
Fred Drakea09262e2001-03-01 18:35:43 +00001082
Greg Ward47f99a62000-09-04 20:07:15 +00001083\begin{verbatim}
1084[bdist_rpm]
1085release = 1
1086packager = Greg Ward <gward@python.net>
1087doc_files = CHANGES.txt
1088 README.txt
1089 USAGE.txt
1090 doc/
1091 examples/
1092\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001093
Greg Ward47f99a62000-09-04 20:07:15 +00001094Note that the \option{doc\_files} option is simply a
1095whitespace-separated string split across multiple lines for readability.
Greg Ward16aafcd2000-04-09 04:06:44 +00001096
1097
Fred Drakea09262e2001-03-01 18:35:43 +00001098\begin{seealso}
1099 \seetitle[../inst/config-syntax.html]{Installing Python
1100 Modules}{More information on the configuration files is
1101 available in the manual for system administrators.}
1102\end{seealso}
1103
1104
Fred Drake211a2eb2004-03-22 21:44:43 +00001105\chapter{Creating a Source Distribution}
Greg Warde78298a2000-04-28 17:12:24 +00001106\label{source-dist}
Greg Ward16aafcd2000-04-09 04:06:44 +00001107
Greg Warde78298a2000-04-28 17:12:24 +00001108As shown in section~\ref{simple-example}, you use the
Greg Ward16aafcd2000-04-09 04:06:44 +00001109\command{sdist} command to create a source distribution. In the
1110simplest case,
Fred Drakea09262e2001-03-01 18:35:43 +00001111
Greg Ward16aafcd2000-04-09 04:06:44 +00001112\begin{verbatim}
1113python setup.py sdist
1114\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001115
Greg Ward19c67f82000-06-24 01:33:16 +00001116(assuming you haven't specified any \command{sdist} options in the setup
1117script or config file), \command{sdist} creates the archive of the
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001118default format for the current platform. The default format is a gzip'ed
Fred Drakeeff9a872000-10-26 16:41:03 +00001119tar file (\file{.tar.gz}) on \UNIX, and ZIP file on Windows.
Greg Ward54589d42000-09-06 01:37:35 +00001120
Greg Wardd5767a52000-04-19 22:48:09 +00001121You can specify as many formats as you like using the
1122\longprogramopt{formats} option, for example:
Fred Drakea09262e2001-03-01 18:35:43 +00001123
Greg Ward16aafcd2000-04-09 04:06:44 +00001124\begin{verbatim}
1125python setup.py sdist --formats=gztar,zip
1126\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001127
Greg Ward16aafcd2000-04-09 04:06:44 +00001128to create a gzipped tarball and a zip file. The available formats are:
Fred Drake781380c2004-02-19 23:17:46 +00001129
Greg Ward46b98e32000-04-14 01:53:36 +00001130\begin{tableiii}{l|l|c}{code}%
1131 {Format}{Description}{Notes}
Greg Ward54589d42000-09-06 01:37:35 +00001132 \lineiii{zip}{zip file (\file{.zip})}{(1),(3)}
1133 \lineiii{gztar}{gzip'ed tar file (\file{.tar.gz})}{(2),(4)}
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001134 \lineiii{bztar}{bzip2'ed tar file (\file{.tar.bz2})}{(4)}
Greg Ward47f99a62000-09-04 20:07:15 +00001135 \lineiii{ztar}{compressed tar file (\file{.tar.Z})}{(4)}
Greg Ward54589d42000-09-06 01:37:35 +00001136 \lineiii{tar}{tar file (\file{.tar})}{(4)}
Greg Ward46b98e32000-04-14 01:53:36 +00001137\end{tableiii}
1138
1139\noindent Notes:
1140\begin{description}
1141\item[(1)] default on Windows
Fred Drakeeff9a872000-10-26 16:41:03 +00001142\item[(2)] default on \UNIX
Greg Wardb6528972000-09-07 02:40:37 +00001143\item[(3)] requires either external \program{zip} utility or
Greg Ward954ce8b2002-05-10 14:42:10 +00001144 \module{zipfile} module (part of the standard Python library since
1145 Python~1.6)
Greg Ward47f99a62000-09-04 20:07:15 +00001146\item[(4)] requires external utilities: \program{tar} and possibly one
1147 of \program{gzip}, \program{bzip2}, or \program{compress}
Greg Ward46b98e32000-04-14 01:53:36 +00001148\end{description}
Greg Ward16aafcd2000-04-09 04:06:44 +00001149
1150
Greg Ward54589d42000-09-06 01:37:35 +00001151
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00001152\section{Specifying the files to distribute}
Greg Warde78298a2000-04-28 17:12:24 +00001153\label{manifest}
Greg Ward16aafcd2000-04-09 04:06:44 +00001154
Greg Ward54589d42000-09-06 01:37:35 +00001155If you don't supply an explicit list of files (or instructions on how to
1156generate one), the \command{sdist} command puts a minimal default set
1157into the source distribution:
Greg Ward16aafcd2000-04-09 04:06:44 +00001158\begin{itemize}
Greg Wardfacb8db2000-04-09 04:32:40 +00001159\item all Python source files implied by the \option{py\_modules} and
Greg Ward16aafcd2000-04-09 04:06:44 +00001160 \option{packages} options
Greg Wardfacb8db2000-04-09 04:32:40 +00001161\item all C source files mentioned in the \option{ext\_modules} or
Greg Ward16aafcd2000-04-09 04:06:44 +00001162 \option{libraries} options (\XXX{getting C library sources currently
Fred Drake781380c2004-02-19 23:17:46 +00001163 broken---no \method{get_source_files()} method in \file{build_clib.py}!})
Fred Drake203b10c2004-03-31 01:50:37 +00001164\item scripts identified by the \option{scripts} option
Greg Ward16aafcd2000-04-09 04:06:44 +00001165\item anything that looks like a test script: \file{test/test*.py}
1166 (currently, the Distutils don't do anything with test scripts except
1167 include them in source distributions, but in the future there will be
1168 a standard for testing Python module distributions)
Greg Ward54589d42000-09-06 01:37:35 +00001169\item \file{README.txt} (or \file{README}), \file{setup.py} (or whatever
1170 you called your setup script), and \file{setup.cfg}
Greg Ward16aafcd2000-04-09 04:06:44 +00001171\end{itemize}
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001172
Greg Ward16aafcd2000-04-09 04:06:44 +00001173Sometimes this is enough, but usually you will want to specify
1174additional files to distribute. The typical way to do this is to write
1175a \emph{manifest template}, called \file{MANIFEST.in} by default. The
Greg Ward54589d42000-09-06 01:37:35 +00001176manifest template is just a list of instructions for how to generate
1177your manifest file, \file{MANIFEST}, which is the exact list of files to
1178include in your source distribution. The \command{sdist} command
1179processes this template and generates a manifest based on its
1180instructions and what it finds in the filesystem.
1181
1182If you prefer to roll your own manifest file, the format is simple: one
1183filename per line, regular files (or symlinks to them) only. If you do
1184supply your own \file{MANIFEST}, you must specify everything: the
1185default set of files described above does not apply in this case.
Greg Ward16aafcd2000-04-09 04:06:44 +00001186
1187The manifest template has one command per line, where each command
1188specifies a set of files to include or exclude from the source
1189distribution. For an example, again we turn to the Distutils' own
1190manifest template:
Fred Drakea09262e2001-03-01 18:35:43 +00001191
Greg Ward16aafcd2000-04-09 04:06:44 +00001192\begin{verbatim}
1193include *.txt
Greg Ward87da1ea2000-04-21 04:35:25 +00001194recursive-include examples *.txt *.py
Greg Ward16aafcd2000-04-09 04:06:44 +00001195prune examples/sample?/build
1196\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001197
Greg Ward16aafcd2000-04-09 04:06:44 +00001198The meanings should be fairly clear: include all files in the
Fred Drake630e5bd2004-03-23 18:54:12 +00001199distribution root matching \file{*.txt}, all files anywhere under the
1200\file{examples} directory matching \file{*.txt} or \file{*.py}, and
1201exclude all directories matching \file{examples/sample?/build}. All of
Greg Ward54589d42000-09-06 01:37:35 +00001202this is done \emph{after} the standard include set, so you can exclude
1203files from the standard set with explicit instructions in the manifest
1204template. (Or, you can use the \longprogramopt{no-defaults} option to
1205disable the standard set entirely.) There are several other commands
1206available in the manifest template mini-language; see
1207section~\ref{sdist-cmd}.
Greg Ward16aafcd2000-04-09 04:06:44 +00001208
Greg Ward54589d42000-09-06 01:37:35 +00001209The order of commands in the manifest template matters: initially, we
1210have the list of default files as described above, and each command in
1211the template adds to or removes from that list of files. Once we have
1212fully processed the manifest template, we remove files that should not
1213be included in the source distribution:
1214\begin{itemize}
1215\item all files in the Distutils ``build'' tree (default \file{build/})
Tim Peters2f50e902004-05-31 19:27:59 +00001216\item all files in directories named \file{RCS}, \file{CVS} or \file{.svn}
Greg Ward54589d42000-09-06 01:37:35 +00001217\end{itemize}
1218Now we have our complete list of files, which is written to the manifest
1219for future reference, and then used to build the source distribution
1220archive(s).
1221
1222You can disable the default set of included files with the
1223\longprogramopt{no-defaults} option, and you can disable the standard
1224exclude set with \longprogramopt{no-prune}.
Greg Ward16aafcd2000-04-09 04:06:44 +00001225
Greg Ward46b98e32000-04-14 01:53:36 +00001226Following the Distutils' own manifest template, let's trace how the
Greg Ward47f99a62000-09-04 20:07:15 +00001227\command{sdist} command builds the list of files to include in the
Greg Ward46b98e32000-04-14 01:53:36 +00001228Distutils source distribution:
Greg Ward16aafcd2000-04-09 04:06:44 +00001229\begin{enumerate}
1230\item include all Python source files in the \file{distutils} and
1231 \file{distutils/command} subdirectories (because packages
1232 corresponding to those two directories were mentioned in the
Greg Ward54589d42000-09-06 01:37:35 +00001233 \option{packages} option in the setup script---see
1234 section~\ref{setup-script})
1235\item include \file{README.txt}, \file{setup.py}, and \file{setup.cfg}
1236 (standard files)
1237\item include \file{test/test*.py} (standard files)
Greg Ward16aafcd2000-04-09 04:06:44 +00001238\item include \file{*.txt} in the distribution root (this will find
1239 \file{README.txt} a second time, but such redundancies are weeded out
1240 later)
Greg Ward54589d42000-09-06 01:37:35 +00001241\item include anything matching \file{*.txt} or \file{*.py} in the
1242 sub-tree under \file{examples},
1243\item exclude all files in the sub-trees starting at directories
1244 matching \file{examples/sample?/build}---this may exclude files
1245 included by the previous two steps, so it's important that the
1246 \code{prune} command in the manifest template comes after the
1247 \code{recursive-include} command
Tim Peters2f50e902004-05-31 19:27:59 +00001248\item exclude the entire \file{build} tree, and any \file{RCS},
1249 \file{CVS} and \file{.svn} directories
Greg Wardfacb8db2000-04-09 04:32:40 +00001250\end{enumerate}
Greg Ward46b98e32000-04-14 01:53:36 +00001251Just like in the setup script, file and directory names in the manifest
1252template should always be slash-separated; the Distutils will take care
1253of converting them to the standard representation on your platform.
1254That way, the manifest template is portable across operating systems.
1255
Greg Ward16aafcd2000-04-09 04:06:44 +00001256
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00001257\section{Manifest-related options}
Greg Warde78298a2000-04-28 17:12:24 +00001258\label{manifest-options}
Greg Ward16aafcd2000-04-09 04:06:44 +00001259
1260The normal course of operations for the \command{sdist} command is as
1261follows:
1262\begin{itemize}
Greg Ward46b98e32000-04-14 01:53:36 +00001263\item if the manifest file, \file{MANIFEST} doesn't exist, read
1264 \file{MANIFEST.in} and create the manifest
Greg Ward54589d42000-09-06 01:37:35 +00001265\item if neither \file{MANIFEST} nor \file{MANIFEST.in} exist, create a
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001266 manifest with just the default file set
Greg Ward1d8f57a2000-08-05 00:43:11 +00001267\item if either \file{MANIFEST.in} or the setup script (\file{setup.py})
1268 are more recent than \file{MANIFEST}, recreate \file{MANIFEST} by
1269 reading \file{MANIFEST.in}
Greg Ward16aafcd2000-04-09 04:06:44 +00001270\item use the list of files now in \file{MANIFEST} (either just
1271 generated or read in) to create the source distribution archive(s)
1272\end{itemize}
Greg Ward54589d42000-09-06 01:37:35 +00001273There are a couple of options that modify this behaviour. First, use
1274the \longprogramopt{no-defaults} and \longprogramopt{no-prune} to
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001275disable the standard ``include'' and ``exclude'' sets.
Greg Ward16aafcd2000-04-09 04:06:44 +00001276
Greg Ward54589d42000-09-06 01:37:35 +00001277Second, you might want to force the manifest to be regenerated---for
Greg Ward16aafcd2000-04-09 04:06:44 +00001278example, if you have added or removed files or directories that match an
1279existing pattern in the manifest template, you should regenerate the
1280manifest:
Fred Drakea09262e2001-03-01 18:35:43 +00001281
Greg Ward16aafcd2000-04-09 04:06:44 +00001282\begin{verbatim}
1283python setup.py sdist --force-manifest
1284\end{verbatim}
Greg Ward16aafcd2000-04-09 04:06:44 +00001285
1286Or, you might just want to (re)generate the manifest, but not create a
1287source distribution:
Fred Drakea09262e2001-03-01 18:35:43 +00001288
Greg Ward16aafcd2000-04-09 04:06:44 +00001289\begin{verbatim}
1290python setup.py sdist --manifest-only
1291\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001292
Greg Ward54589d42000-09-06 01:37:35 +00001293\longprogramopt{manifest-only} implies \longprogramopt{force-manifest}.
1294\programopt{-o} is a shortcut for \longprogramopt{manifest-only}, and
1295\programopt{-f} for \longprogramopt{force-manifest}.
Greg Ward16aafcd2000-04-09 04:06:44 +00001296
1297
Fred Drake211a2eb2004-03-22 21:44:43 +00001298\chapter{Creating Built Distributions}
Greg Warde78298a2000-04-28 17:12:24 +00001299\label{built-dist}
Greg Ward16aafcd2000-04-09 04:06:44 +00001300
Greg Ward46b98e32000-04-14 01:53:36 +00001301A ``built distribution'' is what you're probably used to thinking of
1302either as a ``binary package'' or an ``installer'' (depending on your
1303background). It's not necessarily binary, though, because it might
1304contain only Python source code and/or byte-code; and we don't call it a
1305package, because that word is already spoken for in Python. (And
Fred Drake2a1bc502004-02-19 23:03:29 +00001306``installer'' is a term specific to the world of mainstream desktop
1307systems.)
Greg Ward16aafcd2000-04-09 04:06:44 +00001308
Greg Ward46b98e32000-04-14 01:53:36 +00001309A built distribution is how you make life as easy as possible for
1310installers of your module distribution: for users of RPM-based Linux
1311systems, it's a binary RPM; for Windows users, it's an executable
1312installer; for Debian-based Linux users, it's a Debian package; and so
1313forth. Obviously, no one person will be able to create built
Greg Wardb6528972000-09-07 02:40:37 +00001314distributions for every platform under the sun, so the Distutils are
Greg Ward46b98e32000-04-14 01:53:36 +00001315designed to enable module developers to concentrate on their
1316specialty---writing code and creating source distributions---while an
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001317intermediary species called \emph{packagers} springs up to turn source
Greg Ward19c67f82000-06-24 01:33:16 +00001318distributions into built distributions for as many platforms as there
Greg Ward46b98e32000-04-14 01:53:36 +00001319are packagers.
1320
1321Of course, the module developer could be his own packager; or the
1322packager could be a volunteer ``out there'' somewhere who has access to
1323a platform which the original developer does not; or it could be
1324software periodically grabbing new source distributions and turning them
1325into built distributions for as many platforms as the software has
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001326access to. Regardless of who they are, a packager uses the
Greg Ward46b98e32000-04-14 01:53:36 +00001327setup script and the \command{bdist} command family to generate built
1328distributions.
1329
1330As a simple example, if I run the following command in the Distutils
1331source tree:
Fred Drakea09262e2001-03-01 18:35:43 +00001332
Greg Ward46b98e32000-04-14 01:53:36 +00001333\begin{verbatim}
1334python setup.py bdist
1335\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001336
Greg Ward46b98e32000-04-14 01:53:36 +00001337then the Distutils builds my module distribution (the Distutils itself
1338in this case), does a ``fake'' installation (also in the \file{build}
1339directory), and creates the default type of built distribution for my
Greg Wardb6528972000-09-07 02:40:37 +00001340platform. The default format for built distributions is a ``dumb'' tar
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001341file on \UNIX, and a simple executable installer on Windows. (That tar
Greg Wardb6528972000-09-07 02:40:37 +00001342file is considered ``dumb'' because it has to be unpacked in a specific
1343location to work.)
Greg Ward1d8f57a2000-08-05 00:43:11 +00001344
Fred Drakeeff9a872000-10-26 16:41:03 +00001345Thus, the above command on a \UNIX{} system creates
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001346\file{Distutils-1.0.\filevar{plat}.tar.gz}; unpacking this tarball
Greg Wardb6528972000-09-07 02:40:37 +00001347from the right place installs the Distutils just as though you had
1348downloaded the source distribution and run \code{python setup.py
1349 install}. (The ``right place'' is either the root of the filesystem or
1350Python's \filevar{prefix} directory, depending on the options given to
1351the \command{bdist\_dumb} command; the default is to make dumb
1352distributions relative to \filevar{prefix}.)
Greg Ward46b98e32000-04-14 01:53:36 +00001353
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001354Obviously, for pure Python distributions, this isn't any simpler than
1355just running \code{python setup.py install}---but for non-pure
1356distributions, which include extensions that would need to be
1357compiled, it can mean the difference between someone being able to use
1358your extensions or not. And creating ``smart'' built distributions,
1359such as an RPM package or an executable installer for Windows, is far
1360more convenient for users even if your distribution doesn't include
1361any extensions.
Greg Ward46b98e32000-04-14 01:53:36 +00001362
Greg Wardb6528972000-09-07 02:40:37 +00001363The \command{bdist} command has a \longprogramopt{formats} option,
Greg Ward1d8f57a2000-08-05 00:43:11 +00001364similar to the \command{sdist} command, which you can use to select the
1365types of built distribution to generate: for example,
Fred Drakea09262e2001-03-01 18:35:43 +00001366
Greg Ward46b98e32000-04-14 01:53:36 +00001367\begin{verbatim}
1368python setup.py bdist --format=zip
1369\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001370
Fred Drakeeff9a872000-10-26 16:41:03 +00001371would, when run on a \UNIX{} system, create
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001372\file{Distutils-1.0.\filevar{plat}.zip}---again, this archive would be
Greg Ward1d8f57a2000-08-05 00:43:11 +00001373unpacked from the root directory to install the Distutils.
Greg Ward46b98e32000-04-14 01:53:36 +00001374
1375The available formats for built distributions are:
Fred Drake781380c2004-02-19 23:17:46 +00001376
Greg Ward46b98e32000-04-14 01:53:36 +00001377\begin{tableiii}{l|l|c}{code}%
1378 {Format}{Description}{Notes}
Greg Wardb6528972000-09-07 02:40:37 +00001379 \lineiii{gztar}{gzipped tar file (\file{.tar.gz})}{(1),(3)}
1380 \lineiii{ztar}{compressed tar file (\file{.tar.Z})}{(3)}
1381 \lineiii{tar}{tar file (\file{.tar})}{(3)}
1382 \lineiii{zip}{zip file (\file{.zip})}{(4)}
1383 \lineiii{rpm}{RPM}{(5)}
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001384 \lineiii{pkgtool}{Solaris \program{pkgtool}}{}
1385 \lineiii{sdux}{HP-UX \program{swinstall}}{}
1386 \lineiii{rpm}{RPM}{(5)}
1387% \lineiii{srpm}{source RPM}{(5) \XXX{to do!}}
Thomas Heller5f52f722001-02-19 17:48:03 +00001388 \lineiii{wininst}{self-extracting ZIP file for Windows}{(2),(4)}
Greg Ward46b98e32000-04-14 01:53:36 +00001389\end{tableiii}
1390
1391\noindent Notes:
1392\begin{description}
Fred Drakeeff9a872000-10-26 16:41:03 +00001393\item[(1)] default on \UNIX
Greg Ward1d8f57a2000-08-05 00:43:11 +00001394\item[(2)] default on Windows \XXX{to-do!}
Greg Wardb6528972000-09-07 02:40:37 +00001395\item[(3)] requires external utilities: \program{tar} and possibly one
1396 of \program{gzip}, \program{bzip2}, or \program{compress}
1397\item[(4)] requires either external \program{zip} utility or
Greg Ward954ce8b2002-05-10 14:42:10 +00001398 \module{zipfile} module (part of the standard Python library since
1399 Python~1.6)
Greg Wardb6528972000-09-07 02:40:37 +00001400\item[(5)] requires external \program{rpm} utility, version 3.0.4 or
1401 better (use \code{rpm --version} to find out which version you have)
Greg Ward46b98e32000-04-14 01:53:36 +00001402\end{description}
1403
1404You don't have to use the \command{bdist} command with the
Greg Wardd5767a52000-04-19 22:48:09 +00001405\longprogramopt{formats} option; you can also use the command that
Greg Ward1d8f57a2000-08-05 00:43:11 +00001406directly implements the format you're interested in. Some of these
Greg Ward46b98e32000-04-14 01:53:36 +00001407\command{bdist} ``sub-commands'' actually generate several similar
1408formats; for instance, the \command{bdist\_dumb} command generates all
1409the ``dumb'' archive formats (\code{tar}, \code{ztar}, \code{gztar}, and
1410\code{zip}), and \command{bdist\_rpm} generates both binary and source
1411RPMs. The \command{bdist} sub-commands, and the formats generated by
1412each, are:
Fred Drake781380c2004-02-19 23:17:46 +00001413
Greg Ward46b98e32000-04-14 01:53:36 +00001414\begin{tableii}{l|l}{command}%
1415 {Command}{Formats}
1416 \lineii{bdist\_dumb}{tar, ztar, gztar, zip}
1417 \lineii{bdist\_rpm}{rpm, srpm}
Greg Ward1d8f57a2000-08-05 00:43:11 +00001418 \lineii{bdist\_wininst}{wininst}
Greg Ward46b98e32000-04-14 01:53:36 +00001419\end{tableii}
Greg Ward16aafcd2000-04-09 04:06:44 +00001420
Greg Wardb6528972000-09-07 02:40:37 +00001421The following sections give details on the individual \command{bdist\_*}
1422commands.
1423
1424
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00001425\section{Creating dumb built distributions}
Greg Wardb6528972000-09-07 02:40:37 +00001426\label{creating-dumb}
1427
1428\XXX{Need to document absolute vs. prefix-relative packages here, but
1429 first I have to implement it!}
1430
1431
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00001432\section{Creating RPM packages}
Greg Wardb6528972000-09-07 02:40:37 +00001433\label{creating-rpms}
1434
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001435The RPM format is used by many popular Linux distributions, including
Greg Wardb6528972000-09-07 02:40:37 +00001436Red Hat, SuSE, and Mandrake. If one of these (or any of the other
1437RPM-based Linux distributions) is your usual environment, creating RPM
1438packages for other users of that same distribution is trivial.
1439Depending on the complexity of your module distribution and differences
1440between Linux distributions, you may also be able to create RPMs that
1441work on different RPM-based distributions.
1442
1443The usual way to create an RPM of your module distribution is to run the
1444\command{bdist\_rpm} command:
Fred Drakea09262e2001-03-01 18:35:43 +00001445
Greg Wardb6528972000-09-07 02:40:37 +00001446\begin{verbatim}
1447python setup.py bdist_rpm
1448\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001449
Greg Wardb6528972000-09-07 02:40:37 +00001450or the \command{bdist} command with the \longprogramopt{format} option:
Fred Drakea09262e2001-03-01 18:35:43 +00001451
Greg Wardb6528972000-09-07 02:40:37 +00001452\begin{verbatim}
1453python setup.py bdist --formats=rpm
1454\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001455
Greg Wardb6528972000-09-07 02:40:37 +00001456The former allows you to specify RPM-specific options; the latter allows
1457you to easily specify multiple formats in one run. If you need to do
1458both, you can explicitly specify multiple \command{bdist\_*} commands
1459and their options:
Fred Drakea09262e2001-03-01 18:35:43 +00001460
Greg Wardb6528972000-09-07 02:40:37 +00001461\begin{verbatim}
Fred Drake630e5bd2004-03-23 18:54:12 +00001462python setup.py bdist_rpm --packager="John Doe <jdoe@example.org>" \
Greg Wardb6528972000-09-07 02:40:37 +00001463 bdist_wininst --target_version="2.0"
1464\end{verbatim}
1465
1466Creating RPM packages is driven by a \file{.spec} file, much as using
1467the Distutils is driven by the setup script. To make your life easier,
1468the \command{bdist\_rpm} command normally creates a \file{.spec} file
1469based on the information you supply in the setup script, on the command
1470line, and in any Distutils configuration files. Various options and
Andrew M. Kuchlingda23c4f2001-02-17 00:38:48 +00001471sections in the \file{.spec} file are derived from options in the setup
Greg Wardb6528972000-09-07 02:40:37 +00001472script as follows:
Fred Drake781380c2004-02-19 23:17:46 +00001473
Greg Wardb6528972000-09-07 02:40:37 +00001474\begin{tableii}{l|l}{textrm}%
1475 {RPM \file{.spec} file option or section}{Distutils setup script option}
1476 \lineii{Name}{\option{name}}
1477 \lineii{Summary (in preamble)}{\option{description}}
1478 \lineii{Version}{\option{version}}
1479 \lineii{Vendor}{\option{author} and \option{author\_email}, or \\&
1480 \option{maintainer} and \option{maintainer\_email}}
1481 \lineii{Copyright}{\option{licence}}
1482 \lineii{Url}{\option{url}}
1483 \lineii{\%description (section)}{\option{long\_description}}
1484\end{tableii}
1485
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001486Additionally, there are many options in \file{.spec} files that don't have
Greg Wardb6528972000-09-07 02:40:37 +00001487corresponding options in the setup script. Most of these are handled
1488through options to the \command{bdist\_rpm} command as follows:
Fred Drake781380c2004-02-19 23:17:46 +00001489
Greg Wardb6528972000-09-07 02:40:37 +00001490\begin{tableiii}{l|l|l}{textrm}%
1491 {RPM \file{.spec} file option or section}%
1492 {\command{bdist\_rpm} option}%
1493 {default value}
1494 \lineiii{Release}{\option{release}}{``1''}
1495 \lineiii{Group}{\option{group}}{``Development/Libraries''}
1496 \lineiii{Vendor}{\option{vendor}}{(see above)}
Andrew M. Kuchlingda23c4f2001-02-17 00:38:48 +00001497 \lineiii{Packager}{\option{packager}}{(none)}
1498 \lineiii{Provides}{\option{provides}}{(none)}
1499 \lineiii{Requires}{\option{requires}}{(none)}
1500 \lineiii{Conflicts}{\option{conflicts}}{(none)}
1501 \lineiii{Obsoletes}{\option{obsoletes}}{(none)}
Greg Wardb6528972000-09-07 02:40:37 +00001502 \lineiii{Distribution}{\option{distribution\_name}}{(none)}
1503 \lineiii{BuildRequires}{\option{build\_requires}}{(none)}
1504 \lineiii{Icon}{\option{icon}}{(none)}
1505\end{tableiii}
Fred Drake781380c2004-02-19 23:17:46 +00001506
Greg Wardb6528972000-09-07 02:40:37 +00001507Obviously, supplying even a few of these options on the command-line
1508would be tedious and error-prone, so it's usually best to put them in
1509the setup configuration file, \file{setup.cfg}---see
1510section~\ref{setup-config}. If you distribute or package many Python
1511module distributions, you might want to put options that apply to all of
1512them in your personal Distutils configuration file
1513(\file{\textasciitilde/.pydistutils.cfg}).
1514
1515There are three steps to building a binary RPM package, all of which are
1516handled automatically by the Distutils:
Fred Drake781380c2004-02-19 23:17:46 +00001517
Greg Wardb6528972000-09-07 02:40:37 +00001518\begin{enumerate}
1519\item create a \file{.spec} file, which describes the package (analogous
1520 to the Distutils setup script; in fact, much of the information in the
1521 setup script winds up in the \file{.spec} file)
1522\item create the source RPM
1523\item create the ``binary'' RPM (which may or may not contain binary
1524 code, depending on whether your module distribution contains Python
1525 extensions)
1526\end{enumerate}
Fred Drake781380c2004-02-19 23:17:46 +00001527
Greg Wardb6528972000-09-07 02:40:37 +00001528Normally, RPM bundles the last two steps together; when you use the
1529Distutils, all three steps are typically bundled together.
1530
1531If you wish, you can separate these three steps. You can use the
Fred Drake781380c2004-02-19 23:17:46 +00001532\longprogramopt{spec-only} option to make \command{bdist_rpm} just
Greg Wardb6528972000-09-07 02:40:37 +00001533create the \file{.spec} file and exit; in this case, the \file{.spec}
1534file will be written to the ``distribution directory''---normally
1535\file{dist/}, but customizable with the \longprogramopt{dist-dir}
1536option. (Normally, the \file{.spec} file winds up deep in the ``build
Fred Drake781380c2004-02-19 23:17:46 +00001537tree,'' in a temporary directory created by \command{bdist_rpm}.)
Greg Wardb6528972000-09-07 02:40:37 +00001538
Fred Drake781380c2004-02-19 23:17:46 +00001539% \XXX{this isn't implemented yet---is it needed?!}
1540% You can also specify a custom \file{.spec} file with the
1541% \longprogramopt{spec-file} option; used in conjunction with
1542% \longprogramopt{spec-only}, this gives you an opportunity to customize
1543% the \file{.spec} file manually:
1544%
Matthias Klose4c8fa422004-08-04 23:18:49 +00001545% \ begin{verbatim}
Fred Drake781380c2004-02-19 23:17:46 +00001546% > python setup.py bdist_rpm --spec-only
1547% # ...edit dist/FooBar-1.0.spec
1548% > python setup.py bdist_rpm --spec-file=dist/FooBar-1.0.spec
Matthias Klose4c8fa422004-08-04 23:18:49 +00001549% \ end{verbatim}
Fred Drake781380c2004-02-19 23:17:46 +00001550%
1551% (Although a better way to do this is probably to override the standard
1552% \command{bdist\_rpm} command with one that writes whatever else you want
1553% to the \file{.spec} file.)
Greg Wardb6528972000-09-07 02:40:37 +00001554
1555
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00001556\section{Creating Windows Installers}
Greg Wardb6528972000-09-07 02:40:37 +00001557\label{creating-wininst}
1558
Thomas Hellere61f3652002-11-15 20:13:26 +00001559Executable installers are the natural format for binary distributions
1560on Windows. They display a nice graphical user interface, display
1561some information about the module distribution to be installed taken
Andrew M. Kuchlingd7abe2a2002-05-29 17:33:48 +00001562from the metadata in the setup script, let the user select a few
Thomas Hellere61f3652002-11-15 20:13:26 +00001563options, and start or cancel the installation.
Greg Wardb6528972000-09-07 02:40:37 +00001564
Thomas Hellere61f3652002-11-15 20:13:26 +00001565Since the metadata is taken from the setup script, creating Windows
1566installers is usually as easy as running:
Fred Drakea09262e2001-03-01 18:35:43 +00001567
Thomas Heller5f52f722001-02-19 17:48:03 +00001568\begin{verbatim}
1569python setup.py bdist_wininst
1570\end{verbatim}
Fred Drakea09262e2001-03-01 18:35:43 +00001571
Thomas Heller36343f62002-11-15 19:20:56 +00001572or the \command{bdist} command with the \longprogramopt{formats} option:
Fred Drakea09262e2001-03-01 18:35:43 +00001573
Thomas Heller5f52f722001-02-19 17:48:03 +00001574\begin{verbatim}
1575python setup.py bdist --formats=wininst
1576\end{verbatim}
1577
Thomas Hellere61f3652002-11-15 20:13:26 +00001578If you have a pure module distribution (only containing pure Python
1579modules and packages), the resulting installer will be version
1580independent and have a name like \file{foo-1.0.win32.exe}. These
Fred Drakec54d9252004-02-19 22:16:05 +00001581installers can even be created on \UNIX{} or Mac OS platforms.
Thomas Heller5f52f722001-02-19 17:48:03 +00001582
1583If you have a non-pure distribution, the extensions can only be
Andrew M. Kuchling40df7102002-05-08 13:39:03 +00001584created on a Windows platform, and will be Python version dependent.
Thomas Heller5f52f722001-02-19 17:48:03 +00001585The installer filename will reflect this and now has the form
Thomas Hellere61f3652002-11-15 20:13:26 +00001586\file{foo-1.0.win32-py2.0.exe}. You have to create a separate installer
Thomas Heller5f52f722001-02-19 17:48:03 +00001587for every Python version you want to support.
1588
1589The installer will try to compile pure modules into bytecode after
Thomas Hellere61f3652002-11-15 20:13:26 +00001590installation on the target system in normal and optimizing mode. If
1591you don't want this to happen for some reason, you can run the
Fred Drake0e9bfa32002-11-15 20:34:52 +00001592\command{bdist_wininst} command with the
1593\longprogramopt{no-target-compile} and/or the
1594\longprogramopt{no-target-optimize} option.
Thomas Hellere61f3652002-11-15 20:13:26 +00001595
Fred Drake0e9bfa32002-11-15 20:34:52 +00001596By default the installer will display the cool ``Python Powered'' logo
Thomas Hellere61f3652002-11-15 20:13:26 +00001597when it is run, but you can also supply your own bitmap which must be
Fred Drake0e9bfa32002-11-15 20:34:52 +00001598a Windows \file{.bmp} file with the \longprogramopt{bitmap} option.
Thomas Hellere61f3652002-11-15 20:13:26 +00001599
1600The installer will also display a large title on the desktop
1601background window when it is run, which is constructed from the name
1602of your distribution and the version number. This can be changed to
1603another text by using the \longprogramopt{title} option.
1604
1605The installer file will be written to the ``distribution directory''
1606--- normally \file{dist/}, but customizable with the
1607\longprogramopt{dist-dir} option.
1608
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00001609\subsection{The Postinstallation script}
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001610\label{postinstallation-script}
1611
1612Starting with Python 2.3, a postinstallation script can be specified
1613which the \longprogramopt{install-script} option. The basename of the
1614script must be specified, and the script filename must also be listed
1615in the scripts argument to the setup function.
1616
1617This script will be run at installation time on the target system
Fred Drakec54d9252004-02-19 22:16:05 +00001618after all the files have been copied, with \code{argv[1]} set to
1619\programopt{-install}, and again at uninstallation time before the
1620files are removed with \code{argv[1]} set to \programopt{-remove}.
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001621
1622The installation script runs embedded in the windows installer, every
Fred Drakec54d9252004-02-19 22:16:05 +00001623output (\code{sys.stdout}, \code{sys.stderr}) is redirected into a
1624buffer and will be displayed in the GUI after the script has finished.
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001625
Fred Drakea9ee0da2004-02-19 22:28:15 +00001626Some functions especially useful in this context are available as
1627additional built-in functions in the installation script.
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001628
Fred Drakea9ee0da2004-02-19 22:28:15 +00001629\begin{funcdesc}{directory_created}{path}
1630\funcline{file_created}{path}
1631 These functions should be called when a directory or file is created
1632 by the postinstall script at installation time. It will register
1633 \var{path} with the uninstaller, so that it will be removed when the
1634 distribution is uninstalled. To be safe, directories are only removed
1635 if they are empty.
1636\end{funcdesc}
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001637
Fred Drakea9ee0da2004-02-19 22:28:15 +00001638\begin{funcdesc}{get_special_folder_path}{csidl_string}
1639 This function can be used to retrieve special folder locations on
1640 Windows like the Start Menu or the Desktop. It returns the full
1641 path to the folder. \var{csidl_string} must be one of the following
1642 strings:
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001643
1644\begin{verbatim}
1645"CSIDL_APPDATA"
1646
1647"CSIDL_COMMON_STARTMENU"
1648"CSIDL_STARTMENU"
1649
1650"CSIDL_COMMON_DESKTOPDIRECTORY"
1651"CSIDL_DESKTOPDIRECTORY"
1652
1653"CSIDL_COMMON_STARTUP"
1654"CSIDL_STARTUP"
1655
1656"CSIDL_COMMON_PROGRAMS"
1657"CSIDL_PROGRAMS"
1658
1659"CSIDL_FONTS"
1660\end{verbatim}
1661
Fred Drakea9ee0da2004-02-19 22:28:15 +00001662 If the folder cannot be retrieved, \exception{OSError} is raised.
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001663
Fred Drakea9ee0da2004-02-19 22:28:15 +00001664 Which folders are available depends on the exact Windows version,
1665 and probably also the configuration. For details refer to
1666 Microsoft's documentation of the
1667 \cfunction{SHGetSpecialFolderPath()} function.
1668\end{funcdesc}
Thomas Heller2c3bfc22002-12-12 18:54:19 +00001669
Fred Drakea9ee0da2004-02-19 22:28:15 +00001670\begin{funcdesc}{create_shortcut}{target, description,
1671 filename\optional{,
1672 arguments\optional{,
1673 workdir\optional{,
1674 iconpath\optional{, iconindex}}}}}
1675 This function creates a shortcut.
1676 \var{target} is the path to the program to be started by the shortcut.
Neal Norwitz523c9f02005-08-30 03:34:46 +00001677 \var{description} is the description of the shortcut.
Fred Drakea9ee0da2004-02-19 22:28:15 +00001678 \var{filename} is the title of the shortcut that the user will see.
1679 \var{arguments} specifies the command line arguments, if any.
1680 \var{workdir} is the working directory for the program.
1681 \var{iconpath} is the file containing the icon for the shortcut,
1682 and \var{iconindex} is the index of the icon in the file
1683 \var{iconpath}. Again, for details consult the Microsoft
1684 documentation for the \class{IShellLink} interface.
1685\end{funcdesc}
Greg Wardb6528972000-09-07 02:40:37 +00001686
Fred Drake211a2eb2004-03-22 21:44:43 +00001687\chapter{Registering with the Package Index}
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +00001688\label{package-index}
1689
1690The Python Package Index (PyPI) holds meta-data describing distributions
1691packaged with distutils. The distutils command \command{register} is
1692used to submit your distribution's meta-data to the index. It is invoked
1693as follows:
1694
1695\begin{verbatim}
1696python setup.py register
1697\end{verbatim}
1698
1699Distutils will respond with the following prompt:
1700
1701\begin{verbatim}
1702running register
1703We need to know who you are, so please choose either:
1704 1. use your existing login,
1705 2. register as a new user,
1706 3. have the server generate a new password for you (and email it to you), or
1707 4. quit
1708Your selection [default 1]:
1709\end{verbatim}
1710
1711\noindent Note: if your username and password are saved locally, you will
1712not see this menu.
1713
1714If you have not registered with PyPI, then you will need to do so now. You
1715should choose option 2, and enter your details as required. Soon after
1716submitting your details, you will receive an email which will be used to
1717confirm your registration.
1718
1719Once you are registered, you may choose option 1 from the menu. You will
1720be prompted for your PyPI username and password, and \command{register}
1721will then submit your meta-data to the index.
1722
1723You may submit any number of versions of your distribution to the index. If
1724you alter the meta-data for a particular version, you may submit it again
1725and the index will be updated.
1726
1727PyPI holds a record for each (name, version) combination submitted. The
1728first user to submit information for a given name is designated the Owner
1729of that name. They may submit changes through the \command{register}
1730command or through the web interface. They may also designate other users
1731as Owners or Maintainers. Maintainers may edit the package information, but
1732not designate other Owners or Maintainers.
1733
1734By default PyPI will list all versions of a given package. To hide certain
1735versions, the Hidden property should be set to yes. This must be edited
1736through the web interface.
1737
Martin v. Löwis55f1bb82005-03-21 20:56:35 +00001738\section{The .pypirc file}
1739\label{pypirc}
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +00001740
Martin v. Löwis55f1bb82005-03-21 20:56:35 +00001741The format of the \file{.pypirc} file is formated as follows:
1742
1743\begin{verbatim}
1744[server-login]
1745repository: <repository-url>
1746username: <username>
1747password: <password>
1748\end{verbatim}
1749
1750\var{repository} can be ommitted and defaults to
1751\code{http://www.python.org/pypi}.
1752
1753\chapter{Uploading Packages to the Package Index}
1754\label{package-upload}
1755
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001756\versionadded{2.5}
1757
Martin v. Löwis55f1bb82005-03-21 20:56:35 +00001758The Python Package Index (PyPI) not only stores the package info, but also
1759the package data if the author of the package wishes to. The distutils
1760command \command{upload} pushes the distribution files to PyPI.
1761
Walter Dörwaldc8734a72005-03-23 10:38:59 +00001762The command is invoked immediately after building one or more distribution
Fred Drakeae22bbe2005-03-22 04:09:37 +00001763files. For example, the command
Martin v. Löwis55f1bb82005-03-21 20:56:35 +00001764
1765\begin{verbatim}
1766python setup.py sdist bdist_wininst upload
1767\end{verbatim}
1768
Fred Drakeae22bbe2005-03-22 04:09:37 +00001769will cause the source distribution and the Windows installer to be
1770uploaded to PyPI. Note that these will be uploaded even if they are
1771built using an earlier invocation of \file{setup.py}, but that only
1772distributions named on the command line for the invocation including
1773the \command{upload} command are uploaded.
1774
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001775The \command{upload} command uses the username, password, and repository
1776URL from the \file{\$HOME/.pypirc} file (see section~\ref{pypirc} for
1777more on this file).
1778
Thomas Wouters477c8d52006-05-27 19:21:47 +00001779You can use the \longprogramopt{sign} option to tell \command{upload} to
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001780sign each uploaded file using GPG (GNU Privacy Guard). The
1781\program{gpg} program must be available for execution on the system
1782\envvar{PATH}. You can also specify which key to use for signing
Thomas Wouters477c8d52006-05-27 19:21:47 +00001783using the \longprogramopt{identity=\var{name}} option.
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001784
1785Other \command{upload} options include
Thomas Wouters477c8d52006-05-27 19:21:47 +00001786\longprogramopt{repository=\var{url}} (which lets you override the
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001787repository setting from \file{\$HOME/.pypirc}), and
Thomas Wouters477c8d52006-05-27 19:21:47 +00001788\longprogramopt{show-response} (which displays the full response text
Thomas Wouters49fd7fa2006-04-21 10:40:58 +00001789from the PyPI server for help in debugging upload problems).
Andrew M. Kuchlingd15f4e32003-01-03 15:42:14 +00001790
Fred Drake211a2eb2004-03-22 21:44:43 +00001791\chapter{Examples}
Greg Ward007c04a2002-05-10 14:45:59 +00001792\label{examples}
Fred Drake40333ce2004-06-14 22:07:50 +00001793
1794This chapter provides a number of basic examples to help get started
1795with distutils. Additional information about using distutils can be
1796found in the Distutils Cookbook.
1797
1798\begin{seealso}
1799 \seelink{http://www.python.org/cgi-bin/moinmoin/DistutilsCookbook}
1800 {Distutils Cookbook}
1801 {Collection of recipes showing how to achieve more control
1802 over distutils.}
1803\end{seealso}
1804
1805
Fred Drake211a2eb2004-03-22 21:44:43 +00001806\section{Pure Python distribution (by module)}
Greg Ward007c04a2002-05-10 14:45:59 +00001807\label{pure-mod}
1808
1809If you're just distributing a couple of modules, especially if they
1810don't live in a particular package, you can specify them individually
1811using the \option{py\_modules} option in the setup script.
1812
1813In the simplest case, you'll have two files to worry about: a setup
1814script and the single module you're distributing, \file{foo.py} in this
1815example:
1816\begin{verbatim}
1817<root>/
1818 setup.py
1819 foo.py
1820\end{verbatim}
Guido van Rossumd8faa362007-04-27 19:54:29 +00001821(In all diagrams in this section, \var{\textless root\textgreater}
1822will refer to the distribution root directory.) A minimal setup script
1823to describe this situation would be:
Greg Ward007c04a2002-05-10 14:45:59 +00001824\begin{verbatim}
1825from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001826setup(name='foo',
1827 version='1.0',
1828 py_modules=['foo'],
1829 )
Greg Ward007c04a2002-05-10 14:45:59 +00001830\end{verbatim}
1831Note that the name of the distribution is specified independently with
1832the \option{name} option, and there's no rule that says it has to be the
1833same as the name of the sole module in the distribution (although that's
1834probably a good convention to follow). However, the distribution name
1835is used to generate filenames, so you should stick to letters, digits,
1836underscores, and hyphens.
1837
1838Since \option{py\_modules} is a list, you can of course specify multiple
1839modules, eg. if you're distributing modules \module{foo} and
1840\module{bar}, your setup might look like this:
1841\begin{verbatim}
1842<root>/
1843 setup.py
1844 foo.py
1845 bar.py
1846\end{verbatim}
1847and the setup script might be
1848\begin{verbatim}
1849from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001850setup(name='foobar',
1851 version='1.0',
1852 py_modules=['foo', 'bar'],
1853 )
Greg Ward007c04a2002-05-10 14:45:59 +00001854\end{verbatim}
1855
1856You can put module source files into another directory, but if you have
1857enough modules to do that, it's probably easier to specify modules by
1858package rather than listing them individually.
Greg Ward16aafcd2000-04-09 04:06:44 +00001859
1860
Fred Drake211a2eb2004-03-22 21:44:43 +00001861\section{Pure Python distribution (by package)}
Greg Ward007c04a2002-05-10 14:45:59 +00001862\label{pure-pkg}
1863
1864If you have more than a couple of modules to distribute, especially if
1865they are in multiple packages, it's probably easier to specify whole
1866packages rather than individual modules. This works even if your
1867modules are not in a package; you can just tell the Distutils to process
1868modules from the root package, and that works the same as any other
1869package (except that you don't have to have an \file{\_\_init\_\_.py}
1870file).
1871
1872The setup script from the last example could also be written as
1873\begin{verbatim}
1874from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001875setup(name='foobar',
1876 version='1.0',
1877 packages=[''],
1878 )
Greg Ward007c04a2002-05-10 14:45:59 +00001879\end{verbatim}
1880(The empty string stands for the root package.)
1881
1882If those two files are moved into a subdirectory, but remain in the root
1883package, e.g.:
1884\begin{verbatim}
1885<root>/
1886 setup.py
1887 src/ foo.py
1888 bar.py
1889\end{verbatim}
1890then you would still specify the root package, but you have to tell the
1891Distutils where source files in the root package live:
1892\begin{verbatim}
1893from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001894setup(name='foobar',
1895 version='1.0',
1896 package_dir={'': 'src'},
1897 packages=[''],
1898 )
Greg Ward007c04a2002-05-10 14:45:59 +00001899\end{verbatim}
1900
1901More typically, though, you will want to distribute multiple modules in
1902the same package (or in sub-packages). For example, if the \module{foo}
1903and \module{bar} modules belong in package \module{foobar}, one way to
1904layout your source tree is
1905\begin{verbatim}
1906<root>/
1907 setup.py
1908 foobar/
1909 __init__.py
1910 foo.py
1911 bar.py
1912\end{verbatim}
1913This is in fact the default layout expected by the Distutils, and the
1914one that requires the least work to describe in your setup script:
1915\begin{verbatim}
1916from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001917setup(name='foobar',
1918 version='1.0',
1919 packages=['foobar'],
1920 )
Greg Ward007c04a2002-05-10 14:45:59 +00001921\end{verbatim}
1922
1923If you want to put modules in directories not named for their package,
1924then you need to use the \option{package\_dir} option again. For
1925example, if the \file{src} directory holds modules in the
1926\module{foobar} package:
1927\begin{verbatim}
1928<root>/
1929 setup.py
1930 src/
1931 __init__.py
1932 foo.py
1933 bar.py
1934\end{verbatim}
1935an appropriate setup script would be
1936\begin{verbatim}
1937from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001938setup(name='foobar',
1939 version='1.0',
1940 package_dir={'foobar': 'src'},
1941 packages=['foobar'],
1942 )
Greg Ward007c04a2002-05-10 14:45:59 +00001943\end{verbatim}
1944
1945Or, you might put modules from your main package right in the
1946distribution root:
1947\begin{verbatim}
1948<root>/
1949 setup.py
1950 __init__.py
1951 foo.py
1952 bar.py
1953\end{verbatim}
1954in which case your setup script would be
1955\begin{verbatim}
1956from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001957setup(name='foobar',
1958 version='1.0',
1959 package_dir={'foobar': ''},
1960 packages=['foobar'],
1961 )
Greg Ward007c04a2002-05-10 14:45:59 +00001962\end{verbatim}
1963(The empty string also stands for the current directory.)
1964
1965If you have sub-packages, they must be explicitly listed in
1966\option{packages}, but any entries in \option{package\_dir}
1967automatically extend to sub-packages. (In other words, the Distutils
1968does \emph{not} scan your source tree, trying to figure out which
1969directories correspond to Python packages by looking for
1970\file{\_\_init\_\_.py} files.) Thus, if the default layout grows a
1971sub-package:
1972\begin{verbatim}
1973<root>/
1974 setup.py
1975 foobar/
1976 __init__.py
1977 foo.py
1978 bar.py
1979 subfoo/
1980 __init__.py
1981 blah.py
1982\end{verbatim}
1983then the corresponding setup script would be
1984\begin{verbatim}
1985from distutils.core import setup
Fred Drake630e5bd2004-03-23 18:54:12 +00001986setup(name='foobar',
1987 version='1.0',
1988 packages=['foobar', 'foobar.subfoo'],
1989 )
Greg Ward007c04a2002-05-10 14:45:59 +00001990\end{verbatim}
1991(Again, the empty string in \option{package\_dir} stands for the current
1992directory.)
Greg Ward16aafcd2000-04-09 04:06:44 +00001993
1994
Fred Drake211a2eb2004-03-22 21:44:43 +00001995\section{Single extension module}
Greg Ward007c04a2002-05-10 14:45:59 +00001996\label{single-ext}
1997
1998Extension modules are specified using the \option{ext\_modules} option.
1999\option{package\_dir} has no effect on where extension source files are
2000found; it only affects the source for pure Python modules. The simplest
2001case, a single extension module in a single C source file, is:
2002\begin{verbatim}
2003<root>/
2004 setup.py
2005 foo.c
2006\end{verbatim}
2007If the \module{foo} extension belongs in the root package, the setup
2008script for this could be
2009\begin{verbatim}
2010from distutils.core import setup
Thomas Wouters00ee7ba2006-08-21 19:07:27 +00002011from distutils.extension import Extension
Fred Drake630e5bd2004-03-23 18:54:12 +00002012setup(name='foobar',
2013 version='1.0',
2014 ext_modules=[Extension('foo', ['foo.c'])],
2015 )
Greg Ward007c04a2002-05-10 14:45:59 +00002016\end{verbatim}
2017
2018If the extension actually belongs in a package, say \module{foopkg},
2019then
2020
2021With exactly the same source tree layout, this extension can be put in
2022the \module{foopkg} package simply by changing the name of the
2023extension:
2024\begin{verbatim}
2025from distutils.core import setup
Thomas Wouters00ee7ba2006-08-21 19:07:27 +00002026from distutils.extension import Extension
Fred Drake630e5bd2004-03-23 18:54:12 +00002027setup(name='foobar',
2028 version='1.0',
2029 ext_modules=[Extension('foopkg.foo', ['foo.c'])],
2030 )
Greg Ward007c04a2002-05-10 14:45:59 +00002031\end{verbatim}
Greg Ward16aafcd2000-04-09 04:06:44 +00002032
2033
Fred Drake211a2eb2004-03-22 21:44:43 +00002034%\section{Multiple extension modules}
Fred Drakea09262e2001-03-01 18:35:43 +00002035%\label{multiple-ext}
Greg Ward16aafcd2000-04-09 04:06:44 +00002036
2037
Fred Drake211a2eb2004-03-22 21:44:43 +00002038%\section{Putting it all together}
Greg Ward16aafcd2000-04-09 04:06:44 +00002039
2040
Fred Drake0c84c7f2004-08-02 21:39:11 +00002041\chapter{Extending Distutils \label{extending}}
2042
2043Distutils can be extended in various ways. Most extensions take the
2044form of new commands or replacements for existing commands. New
2045commands may be written to support new types of platform-specific
2046packaging, for example, while replacements for existing commands may
2047be made to modify details of how the command operates on a package.
2048
2049Most extensions of the distutils are made within \file{setup.py}
2050scripts that want to modify existing commands; many simply add a few
2051file extensions that should be copied into packages in addition to
2052\file{.py} files as a convenience.
2053
2054Most distutils command implementations are subclasses of the
2055\class{Command} class from \refmodule{distutils.cmd}. New commands
2056may directly inherit from \class{Command}, while replacements often
2057derive from \class{Command} indirectly, directly subclassing the
Fred Drakebec69f62004-08-02 23:05:25 +00002058command they are replacing. Commands are required to derive from
2059\class{Command}.
Greg Ward4a9e7222000-04-25 02:57:36 +00002060
2061
Fred Drake211a2eb2004-03-22 21:44:43 +00002062%\section{Extending existing commands}
Fred Drakea09262e2001-03-01 18:35:43 +00002063%\label{extend-existing}
Greg Ward4a9e7222000-04-25 02:57:36 +00002064
2065
Fred Drake211a2eb2004-03-22 21:44:43 +00002066%\section{Writing new commands}
Fred Drakea09262e2001-03-01 18:35:43 +00002067%\label{new-commands}
Greg Ward4a9e7222000-04-25 02:57:36 +00002068
Fred Drakea09262e2001-03-01 18:35:43 +00002069%\XXX{Would an uninstall command be a good example here?}
Thomas Heller5f52f722001-02-19 17:48:03 +00002070
Fred Drake0c84c7f2004-08-02 21:39:11 +00002071\section{Integrating new commands}
2072
2073There are different ways to integrate new command implementations into
2074distutils. The most difficult is to lobby for the inclusion of the
2075new features in distutils itself, and wait for (and require) a version
2076of Python that provides that support. This is really hard for many
2077reasons.
2078
2079The most common, and possibly the most reasonable for most needs, is
2080to include the new implementations with your \file{setup.py} script,
2081and cause the \function{distutils.core.setup()} function use them:
2082
2083\begin{verbatim}
2084from distutils.command.build_py import build_py as _build_py
2085from distutils.core import setup
2086
2087class build_py(_build_py):
2088 """Specialized Python source builder."""
2089
2090 # implement whatever needs to be different...
2091
2092setup(cmdclass={'build_py': build_py},
2093 ...)
2094\end{verbatim}
2095
2096This approach is most valuable if the new implementations must be used
2097to use a particular package, as everyone interested in the package
2098will need to have the new command implementation.
Greg Ward4a9e7222000-04-25 02:57:36 +00002099
Fred Draked04573f2004-08-03 16:37:40 +00002100Beginning with Python 2.4, a third option is available, intended to
2101allow new commands to be added which can support existing
2102\file{setup.py} scripts without requiring modifications to the Python
2103installation. This is expected to allow third-party extensions to
2104provide support for additional packaging systems, but the commands can
2105be used for anything distutils commands can be used for. A new
2106configuration option, \option{command\_packages} (command-line option
2107\longprogramopt{command-packages}), can be used to specify additional
2108packages to be searched for modules implementing commands. Like all
2109distutils options, this can be specified on the command line or in a
2110configuration file. This option can only be set in the
2111\code{[global]} section of a configuration file, or before any
2112commands on the command line. If set in a configuration file, it can
2113be overridden from the command line; setting it to an empty string on
2114the command line causes the default to be used. This should never be
2115set in a configuration file provided with a package.
2116
2117This new option can be used to add any number of packages to the list
2118of packages searched for command implementations; multiple package
2119names should be separated by commas. When not specified, the search
2120is only performed in the \module{distutils.command} package. When
2121\file{setup.py} is run with the option
2122\longprogramopt{command-packages} \programopt{distcmds,buildcmds},
2123however, the packages \module{distutils.command}, \module{distcmds},
2124and \module{buildcmds} will be searched in that order. New commands
2125are expected to be implemented in modules of the same name as the
2126command by classes sharing the same name. Given the example command
2127line option above, the command \command{bdist\_openpkg} could be
2128implemented by the class \class{distcmds.bdist_openpkg.bdist_openpkg}
2129or \class{buildcmds.bdist_openpkg.bdist_openpkg}.
2130
Martin v. Löwis55f1bb82005-03-21 20:56:35 +00002131\section{Adding new distribution types}
2132
Fred Drakeae22bbe2005-03-22 04:09:37 +00002133Commands that create distributions (files in the \file{dist/}
2134directory) need to add \code{(\var{command}, \var{filename})} pairs to
2135\code{self.distribution.dist_files} so that \command{upload} can
2136upload it to PyPI. The \var{filename} in the pair contains no path
2137information, only the name of the file itself. In dry-run mode, pairs
2138should still be added to represent what would have been created.
Greg Ward4a9e7222000-04-25 02:57:36 +00002139
Fred Drake211a2eb2004-03-22 21:44:43 +00002140\chapter{Command Reference}
Greg Ward47f99a62000-09-04 20:07:15 +00002141\label{reference}
Greg Ward16aafcd2000-04-09 04:06:44 +00002142
2143
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00002144%\section{Building modules: the \protect\command{build} command family}
Fred Drakea09262e2001-03-01 18:35:43 +00002145%\label{build-cmds}
Greg Ward16aafcd2000-04-09 04:06:44 +00002146
Fred Drakea09262e2001-03-01 18:35:43 +00002147%\subsubsection{\protect\command{build}}
2148%\label{build-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002149
Fred Drakea09262e2001-03-01 18:35:43 +00002150%\subsubsection{\protect\command{build\_py}}
2151%\label{build-py-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002152
Fred Drakea09262e2001-03-01 18:35:43 +00002153%\subsubsection{\protect\command{build\_ext}}
2154%\label{build-ext-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002155
Fred Drakea09262e2001-03-01 18:35:43 +00002156%\subsubsection{\protect\command{build\_clib}}
2157%\label{build-clib-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002158
2159
Fred Drake211a2eb2004-03-22 21:44:43 +00002160\section{Installing modules: the \protect\command{install} command family}
Greg Warde78298a2000-04-28 17:12:24 +00002161\label{install-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002162
Gregory P. Smith147e5f32000-05-12 00:58:18 +00002163The install command ensures that the build commands have been run and then
2164runs the subcommands \command{install\_lib},
2165\command{install\_data} and
2166\command{install\_scripts}.
2167
Fred Drakea09262e2001-03-01 18:35:43 +00002168%\subsubsection{\protect\command{install\_lib}}
2169%\label{install-lib-cmd}
Gregory P. Smith147e5f32000-05-12 00:58:18 +00002170
Fred Drake211a2eb2004-03-22 21:44:43 +00002171\subsection{\protect\command{install\_data}}
Greg Ward1365a302000-08-31 14:47:05 +00002172\label{install-data-cmd}
Gregory P. Smith147e5f32000-05-12 00:58:18 +00002173This command installs all data files provided with the distribution.
2174
Fred Drake211a2eb2004-03-22 21:44:43 +00002175\subsection{\protect\command{install\_scripts}}
Greg Ward1365a302000-08-31 14:47:05 +00002176\label{install-scripts-cmd}
Gregory P. Smith147e5f32000-05-12 00:58:18 +00002177This command installs all (Python) scripts in the distribution.
2178
Greg Ward16aafcd2000-04-09 04:06:44 +00002179
Fred Drakea09262e2001-03-01 18:35:43 +00002180%\subsection{Cleaning up: the \protect\command{clean} command}
2181%\label{clean-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002182
2183
Fred Drake211a2eb2004-03-22 21:44:43 +00002184\section{Creating a source distribution: the
Fred Drakeeff9a872000-10-26 16:41:03 +00002185 \protect\command{sdist} command}
Greg Warde78298a2000-04-28 17:12:24 +00002186\label{sdist-cmd}
Greg Ward16aafcd2000-04-09 04:06:44 +00002187
2188
2189\XXX{fragment moved down from above: needs context!}
Greg Wardb6528972000-09-07 02:40:37 +00002190
Greg Ward16aafcd2000-04-09 04:06:44 +00002191The manifest template commands are:
Fred Drake781380c2004-02-19 23:17:46 +00002192
Greg Ward16aafcd2000-04-09 04:06:44 +00002193\begin{tableii}{ll}{command}{Command}{Description}
Greg Ward87da1ea2000-04-21 04:35:25 +00002194 \lineii{include \var{pat1} \var{pat2} ... }
2195 {include all files matching any of the listed patterns}
2196 \lineii{exclude \var{pat1} \var{pat2} ... }
2197 {exclude all files matching any of the listed patterns}
2198 \lineii{recursive-include \var{dir} \var{pat1} \var{pat2} ... }
2199 {include all files under \var{dir} matching any of the listed patterns}
2200 \lineii{recursive-exclude \var{dir} \var{pat1} \var{pat2} ...}
2201 {exclude all files under \var{dir} matching any of the listed patterns}
2202 \lineii{global-include \var{pat1} \var{pat2} ...}
Greg Ward1bbe3292000-06-25 03:14:13 +00002203 {include all files anywhere in the source tree matching\\&
Greg Ward87da1ea2000-04-21 04:35:25 +00002204 any of the listed patterns}
2205 \lineii{global-exclude \var{pat1} \var{pat2} ...}
Greg Ward1bbe3292000-06-25 03:14:13 +00002206 {exclude all files anywhere in the source tree matching\\&
Greg Ward87da1ea2000-04-21 04:35:25 +00002207 any of the listed patterns}
Greg Ward16aafcd2000-04-09 04:06:44 +00002208 \lineii{prune \var{dir}}{exclude all files under \var{dir}}
2209 \lineii{graft \var{dir}}{include all files under \var{dir}}
2210\end{tableii}
Fred Drake781380c2004-02-19 23:17:46 +00002211
Fred Drakeeff9a872000-10-26 16:41:03 +00002212The patterns here are \UNIX-style ``glob'' patterns: \code{*} matches any
Greg Ward16aafcd2000-04-09 04:06:44 +00002213sequence of regular filename characters, \code{?} matches any single
2214regular filename character, and \code{[\var{range}]} matches any of the
2215characters in \var{range} (e.g., \code{a-z}, \code{a-zA-Z},
Greg Wardfacb8db2000-04-09 04:32:40 +00002216\code{a-f0-9\_.}). The definition of ``regular filename character'' is
Fred Drakeeff9a872000-10-26 16:41:03 +00002217platform-specific: on \UNIX{} it is anything except slash; on Windows
Brett Cannon7706c2d2005-02-13 22:50:04 +00002218anything except backslash or colon; on Mac OS 9 anything except colon.
Greg Wardb6528972000-09-07 02:40:37 +00002219
Brett Cannon7706c2d2005-02-13 22:50:04 +00002220\XXX{Windows support not there yet}
Greg Ward16aafcd2000-04-09 04:06:44 +00002221
2222
Fred Drake211a2eb2004-03-22 21:44:43 +00002223%\section{Creating a built distribution: the
Fred Drakea09262e2001-03-01 18:35:43 +00002224% \protect\command{bdist} command family}
2225%\label{bdist-cmds}
Greg Ward16aafcd2000-04-09 04:06:44 +00002226
2227
Fred Drake211a2eb2004-03-22 21:44:43 +00002228%\subsection{\protect\command{bdist}}
Greg Ward16aafcd2000-04-09 04:06:44 +00002229
Fred Drake211a2eb2004-03-22 21:44:43 +00002230%\subsection{\protect\command{bdist\_dumb}}
Greg Ward16aafcd2000-04-09 04:06:44 +00002231
Fred Drake211a2eb2004-03-22 21:44:43 +00002232%\subsection{\protect\command{bdist\_rpm}}
Greg Ward16aafcd2000-04-09 04:06:44 +00002233
Fred Drake211a2eb2004-03-22 21:44:43 +00002234%\subsection{\protect\command{bdist\_wininst}}
Fred Drakeab70b382001-08-02 15:13:15 +00002235
2236
Fred Drake6fca7cc2004-03-23 18:43:03 +00002237\chapter{API Reference \label{api-reference}}
2238
2239\section{\module{distutils.core} --- Core Distutils functionality}
2240
2241\declaremodule{standard}{distutils.core}
2242\modulesynopsis{The core Distutils functionality}
2243
2244The \module{distutils.core} module is the only module that needs to be
2245installed to use the Distutils. It provides the \function{setup()} (which
2246is called from the setup script). Indirectly provides the
2247\class{distutils.dist.Distribution} and \class{distutils.cmd.Command} class.
2248
2249\begin{funcdesc}{setup}{arguments}
2250The basic do-everything function that does most everything you could ever
2251ask for from a Distutils method. See XXXXX
2252
2253The setup function takes a large number of arguments. These
2254are laid out in the following table.
2255
2256\begin{tableiii}{c|l|l}{argument name}{argument name}{value}{type}
2257\lineiii{name}{The name of the package}{a string}
2258\lineiii{version}{The version number of the package}{See \refmodule{distutils.version}}
2259\lineiii{description}{A single line describing the package}{a string}
2260\lineiii{long_description}{Longer description of the package}{a string}
2261\lineiii{author}{The name of the package author}{a string}
2262\lineiii{author_email}{The email address of the package author}{a string}
2263\lineiii{maintainer}{The name of the current maintainer, if different from the author}{a string}
2264\lineiii{maintainer_email}{The email address of the current maintainer, if different from the author}{}
2265\lineiii{url}{A URL for the package (homepage)}{a URL}
2266\lineiii{download_url}{A URL to download the package}{a URL}
2267\lineiii{packages}{A list of Python packages that distutils will manipulate}{a list of strings}
2268\lineiii{py_modules}{A list of Python modules that distutils will manipulate}{a list of strings}
2269\lineiii{scripts}{A list of standalone script files to be built and installed}{a list of strings}
2270\lineiii{ext_modules}{A list of Python extensions to be built}{A list of
2271instances of \class{distutils.core.Extension}}
Thomas Wouters73e5a5b2006-06-08 15:35:45 +00002272\lineiii{classifiers}{A list of categories for the package}{The list of available categorizations is at \url{http://cheeseshop.python.org/pypi?:action=list_classifiers}.}
Fred Drake6fca7cc2004-03-23 18:43:03 +00002273\lineiii{distclass}{the \class{Distribution} class to use}{A subclass of \class{distutils.core.Distribution}}
2274% What on earth is the use case for script_name?
2275\lineiii{script_name}{The name of the setup.py script - defaults to \code{sys.argv[0]}}{a string}
2276\lineiii{script_args}{Arguments to supply to the setup script}{a list of strings}
2277\lineiii{options}{default options for the setup script}{a string}
2278\lineiii{license}{The license for the package}{}
2279\lineiii{keywords}{Descriptive meta-data. See \pep{314}}{}
2280\lineiii{platforms}{}{}
2281\lineiii{cmdclass}{A mapping of command names to \class{Command} subclasses}{a dictionary}
2282\end{tableiii}
2283
2284\end{funcdesc}
2285
2286\begin{funcdesc}{run_setup}{script_name\optional{, script_args=\code{None}, stop_after=\code{'run'}}}
2287Run a setup script in a somewhat controlled environment, and return
2288the \class{distutils.dist.Distribution} instance that drives things.
2289This is useful if you need to find out the distribution meta-data
2290(passed as keyword args from \var{script} to \function{setup()}), or
2291the contents of the config files or command-line.
2292
2293\var{script_name} is a file that will be run with \function{execfile()}
Fred Drake9687b4d2005-03-10 03:48:14 +00002294\code{sys.argv[0]} will be replaced with \var{script} for the duration of the
Fred Drake6fca7cc2004-03-23 18:43:03 +00002295call. \var{script_args} is a list of strings; if supplied,
Fred Drake9687b4d2005-03-10 03:48:14 +00002296\code{sys.argv[1:]} will be replaced by \var{script_args} for the duration
Fred Drake6fca7cc2004-03-23 18:43:03 +00002297of the call.
2298
2299\var{stop_after} tells \function{setup()} when to stop processing; possible
2300values:
2301
2302\begin{tableii}{c|l}{value}{value}{description}
2303\lineii{init}{Stop after the \class{Distribution} instance has been created
2304and populated with the keyword arguments to \function{setup()}}
2305\lineii{config}{Stop after config files have been parsed (and their data
2306stored in the \class{Distribution} instance)}
2307\lineii{commandline}{Stop after the command-line (\code{sys.argv[1:]} or
2308\var{script_args}) have been parsed (and the data stored in the
2309\class{Distribution} instance.)}
2310\lineii{run}{Stop after all commands have been run (the same as
2311if \function{setup()} had been called in the usual way). This is the default
2312value.}
2313\end{tableii}
2314\end{funcdesc}
2315
2316In addition, the \module{distutils.core} module exposed a number of
2317classes that live elsewhere.
2318
2319\begin{itemize}
2320\item \class{Extension} from \refmodule{distutils.extension}
2321\item \class{Command} from \refmodule{distutils.cmd}
2322\item \class{Distribution} from \refmodule{distutils.dist}
2323\end{itemize}
2324
2325A short description of each of these follows, but see the relevant
2326module for the full reference.
2327
2328\begin{classdesc*}{Extension}
2329
2330The Extension class describes a single C or \Cpp extension module in a
Georg Brandl7eb4b7d2005-07-22 21:49:32 +00002331setup script. It accepts the following keyword arguments in its
Fred Drake6fca7cc2004-03-23 18:43:03 +00002332constructor
2333
2334\begin{tableiii}{c|l|l}{argument name}{argument name}{value}{type}
2335\lineiii{name}{the full name of the extension, including any packages
2336--- ie. \emph{not} a filename or pathname, but Python dotted name}{string}
2337\lineiii{sources}{list of source filenames, relative to the distribution
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002338root (where the setup script lives), in \UNIX{} form (slash-separated) for
Fred Drake6fca7cc2004-03-23 18:43:03 +00002339portability. Source files may be C, \Cpp, SWIG (.i), platform-specific
2340resource files, or whatever else is recognized by the \command{build_ext}
2341command as source for a Python extension.}{string}
2342\lineiii{include_dirs}{list of directories to search for C/\Cpp{} header
2343files (in \UNIX{} form for portability)}{string}
2344\lineiii{define_macros}{list of macros to define; each macro is defined
2345using a 2-tuple, where 'value' is either the string to define it to or
2346\code{None} to define it without a particular value (equivalent of
2347\code{\#define FOO} in source or \programopt{-DFOO} on \UNIX{} C
2348compiler command line) }{ (string,string)
2349tuple or (name,\code{None}) }
2350\lineiii{undef_macros}{list of macros to undefine explicitly}{string}
2351\lineiii{library_dirs}{list of directories to search for C/\Cpp{} libraries
2352at link time }{string}
2353\lineiii{libraries}{list of library names (not filenames or paths) to
2354link against }{string}
2355\lineiii{runtime_library_dirs}{list of directories to search for C/\Cpp{}
2356libraries at run time (for shared extensions, this is when the extension
2357is loaded)}{string}
2358\lineiii{extra_objects}{list of extra files to link with (eg. object
2359files not implied by 'sources', static library that must be explicitly
2360specified, binary resource files, etc.)}{string}
2361\lineiii{extra_compile_args}{any extra platform- and compiler-specific
2362information to use when compiling the source files in 'sources'. For
2363platforms and compilers where a command line makes sense, this is
2364typically a list of command-line arguments, but for other platforms it
2365could be anything.}{string}
2366\lineiii{extra_link_args}{any extra platform- and compiler-specific
2367information to use when linking object files together to create the
2368extension (or to create a new static Python interpreter). Similar
2369interpretation as for 'extra_compile_args'.}{string}
2370\lineiii{export_symbols}{list of symbols to be exported from a shared
2371extension. Not used on all platforms, and not generally necessary for
2372Python extensions, which typically export exactly one symbol: \code{init} +
2373extension_name. }{string}
2374\lineiii{depends}{list of files that the extension depends on }{string}
2375\lineiii{language}{extension language (i.e. \code{'c'}, \code{'c++'},
2376\code{'objc'}). Will be detected from the source extensions if not provided.
2377}{string}
2378\end{tableiii}
2379\end{classdesc*}
2380
2381\begin{classdesc*}{Distribution}
2382A \class{Distribution} describes how to build, install and package up a
2383Python software package.
2384
2385See the \function{setup()} function for a list of keyword arguments accepted
2386by the Distribution constructor. \function{setup()} creates a Distribution
2387instance.
2388\end{classdesc*}
2389
2390\begin{classdesc*}{Command}
Georg Brandl7eb4b7d2005-07-22 21:49:32 +00002391A \class{Command} class (or rather, an instance of one of its subclasses)
Fred Drake6fca7cc2004-03-23 18:43:03 +00002392implement a single distutils command.
2393\end{classdesc*}
2394
2395
2396\section{\module{distutils.ccompiler} --- CCompiler base class}
2397\declaremodule{standard}{distutils.ccompiler}
2398\modulesynopsis{Abstract CCompiler class}
2399
2400This module provides the abstract base class for the \class{CCompiler}
2401classes. A \class{CCompiler} instance can be used for all the compile
2402and link steps needed to build a single project. Methods are provided to
2403set options for the compiler --- macro definitions, include directories,
2404link path, libraries and the like.
2405
2406This module provides the following functions.
2407
2408\begin{funcdesc}{gen_lib_options}{compiler, library_dirs, runtime_library_dirs, libraries}
2409Generate linker options for searching library directories and
2410linking with specific libraries. \var{libraries} and \var{library_dirs} are,
2411respectively, lists of library names (not filenames!) and search
2412directories. Returns a list of command-line options suitable for use
2413with some compiler (depending on the two format strings passed in).
2414\end{funcdesc}
2415
2416\begin{funcdesc}{gen_preprocess_options}{macros, include_dirs}
Fred Drake9687b4d2005-03-10 03:48:14 +00002417Generate C pre-processor options (\programopt{-D}, \programopt{-U},
2418\programopt{-I}) as used by at least
Fred Drake6fca7cc2004-03-23 18:43:03 +00002419two types of compilers: the typical \UNIX{} compiler and Visual \Cpp.
Fred Drake9687b4d2005-03-10 03:48:14 +00002420\var{macros} is the usual thing, a list of 1- or 2-tuples, where
2421\code{(\var{name},)} means undefine (\programopt{-U}) macro \var{name},
2422and \code{(\var{name}, \var{value})} means define (\programopt{-D})
2423macro \var{name} to \var{value}. \var{include_dirs} is just a list of
2424directory names to be added to the header file search path (\programopt{-I}).
2425Returns a list of command-line options suitable for either \UNIX{} compilers
2426or Visual \Cpp.
Fred Drake6fca7cc2004-03-23 18:43:03 +00002427\end{funcdesc}
2428
2429\begin{funcdesc}{get_default_compiler}{osname, platform}
2430Determine the default compiler to use for the given platform.
2431
Fred Drake9687b4d2005-03-10 03:48:14 +00002432\var{osname} should be one of the standard Python OS names (i.e.\ the
2433ones returned by \code{os.name}) and \var{platform} the common value
2434returned by \code{sys.platform} for the platform in question.
Fred Drake6fca7cc2004-03-23 18:43:03 +00002435
2436The default values are \code{os.name} and \code{sys.platform} in case the
2437parameters are not given.
2438\end{funcdesc}
2439
2440\begin{funcdesc}{new_compiler}{plat=\code{None}, compiler=\code{None}, verbose=\code{0}, dry_run=\code{0}, force=\code{0}}
2441Factory function to generate an instance of some CCompiler subclass
2442for the supplied platform/compiler combination. \var{plat} defaults
2443to \code{os.name} (eg. \code{'posix'}, \code{'nt'}), and \var{compiler}
2444defaults to the default compiler for that platform. Currently only
2445\code{'posix'} and \code{'nt'} are supported, and the default
2446compilers are ``traditional \UNIX{} interface'' (\class{UnixCCompiler}
2447class) and Visual \Cpp (\class{MSVCCompiler} class). Note that it's
2448perfectly possible to ask for a \UNIX{} compiler object under Windows,
2449and a Microsoft compiler object under \UNIX---if you supply a value
2450for \var{compiler}, \var{plat} is ignored.
2451% Is the posix/nt only thing still true? Mac OS X seems to work, and
2452% returns a UnixCCompiler instance. How to document this... hmm.
2453\end{funcdesc}
2454
2455\begin{funcdesc}{show_compilers}{}
2456Print list of available compilers (used by the
2457\longprogramopt{help-compiler} options to \command{build},
2458\command{build_ext}, \command{build_clib}).
2459\end{funcdesc}
2460
2461\begin{classdesc}{CCompiler}{\optional{verbose=\code{0}, dry_run=\code{0}, force=\code{0}}}
2462
2463The abstract base class \class{CCompiler} defines the interface that
2464must be implemented by real compiler classes. The class also has
2465some utility methods used by several compiler classes.
2466
2467The basic idea behind a compiler abstraction class is that each
2468instance can be used for all the compile/link steps in building a
2469single project. Thus, attributes common to all of those compile and
2470link steps --- include directories, macros to define, libraries to link
2471against, etc. --- are attributes of the compiler instance. To allow for
2472variability in how individual files are treated, most of those
2473attributes may be varied on a per-compilation or per-link basis.
2474
2475The constructor for each subclass creates an instance of the Compiler
2476object. Flags are \var{verbose} (show verbose output), \var{dry_run}
2477(don't actually execute the steps) and \var{force} (rebuild
2478everything, regardless of dependencies). All of these flags default to
2479\code{0} (off). Note that you probably don't want to instantiate
Georg Brandl7eb4b7d2005-07-22 21:49:32 +00002480\class{CCompiler} or one of its subclasses directly - use the
Fred Drake6fca7cc2004-03-23 18:43:03 +00002481\function{distutils.CCompiler.new_compiler()} factory function
2482instead.
2483
2484The following methods allow you to manually alter compiler options for
2485the instance of the Compiler class.
2486
2487\begin{methoddesc}{add_include_dir}{dir}
2488Add \var{dir} to the list of directories that will be searched for
2489header files. The compiler is instructed to search directories in
2490the order in which they are supplied by successive calls to
2491\method{add_include_dir()}.
2492\end{methoddesc}
2493
2494\begin{methoddesc}{set_include_dirs}{dirs}
2495Set the list of directories that will be searched to \var{dirs} (a
2496list of strings). Overrides any preceding calls to
2497\method{add_include_dir()}; subsequent calls to
2498\method{add_include_dir()} add to the list passed to
2499\method{set_include_dirs()}. This does not affect any list of
2500standard include directories that the compiler may search by default.
2501\end{methoddesc}
2502
2503\begin{methoddesc}{add_library}{libname}
2504
2505Add \var{libname} to the list of libraries that will be included in
2506all links driven by this compiler object. Note that \var{libname}
2507should *not* be the name of a file containing a library, but the
2508name of the library itself: the actual filename will be inferred by
2509the linker, the compiler, or the compiler class (depending on the
2510platform).
2511
2512The linker will be instructed to link against libraries in the
2513order they were supplied to \method{add_library()} and/or
2514\method{set_libraries()}. It is perfectly valid to duplicate library
2515names; the linker will be instructed to link against libraries as
2516many times as they are mentioned.
2517\end{methoddesc}
2518
2519\begin{methoddesc}{set_libraries}{libnames}
2520Set the list of libraries to be included in all links driven by
2521this compiler object to \var{libnames} (a list of strings). This does
2522not affect any standard system libraries that the linker may
2523include by default.
2524\end{methoddesc}
2525
2526\begin{methoddesc}{add_library_dir}{dir}
2527Add \var{dir} to the list of directories that will be searched for
2528libraries specified to \method{add_library()} and
2529\method{set_libraries()}. The linker will be instructed to search for
2530libraries in the order they are supplied to \method{add_library_dir()}
2531and/or \method{set_library_dirs()}.
2532\end{methoddesc}
2533
2534\begin{methoddesc}{set_library_dirs}{dirs}
2535Set the list of library search directories to \var{dirs} (a list of
2536strings). This does not affect any standard library search path
2537that the linker may search by default.
2538\end{methoddesc}
2539
2540\begin{methoddesc}{add_runtime_library_dir}{dir}
2541Add \var{dir} to the list of directories that will be searched for
2542shared libraries at runtime.
2543\end{methoddesc}
2544
2545\begin{methoddesc}{set_runtime_library_dirs}{dirs}
2546Set the list of directories to search for shared libraries at
2547runtime to \var{dirs} (a list of strings). This does not affect any
2548standard search path that the runtime linker may search by
2549default.
2550\end{methoddesc}
2551
2552\begin{methoddesc}{define_macro}{name\optional{, value=\code{None}}}
2553Define a preprocessor macro for all compilations driven by this
2554compiler object. The optional parameter \var{value} should be a
2555string; if it is not supplied, then the macro will be defined
2556without an explicit value and the exact outcome depends on the
2557compiler used (XXX true? does ANSI say anything about this?)
2558\end{methoddesc}
2559
2560\begin{methoddesc}{undefine_macro}{name}
2561Undefine a preprocessor macro for all compilations driven by
2562this compiler object. If the same macro is defined by
2563\method{define_macro()} and undefined by \method{undefine_macro()}
2564the last call takes precedence (including multiple redefinitions or
2565undefinitions). If the macro is redefined/undefined on a
2566per-compilation basis (ie. in the call to \method{compile()}), then that
2567takes precedence.
2568\end{methoddesc}
2569
2570\begin{methoddesc}{add_link_object}{object}
2571Add \var{object} to the list of object files (or analogues, such as
2572explicitly named library files or the output of ``resource
2573compilers'') to be included in every link driven by this compiler
2574object.
2575\end{methoddesc}
2576
2577\begin{methoddesc}{set_link_objects}{objects}
2578Set the list of object files (or analogues) to be included in
2579every link to \var{objects}. This does not affect any standard object
2580files that the linker may include by default (such as system
2581libraries).
2582\end{methoddesc}
2583
2584The following methods implement methods for autodetection of compiler
2585options, providing some functionality similar to GNU \program{autoconf}.
2586
2587\begin{methoddesc}{detect_language}{sources}
2588Detect the language of a given file, or list of files. Uses the
2589instance attributes \member{language_map} (a dictionary), and
2590\member{language_order} (a list) to do the job.
2591\end{methoddesc}
2592
2593\begin{methoddesc}{find_library_file}{dirs, lib\optional{, debug=\code{0}}}
2594Search the specified list of directories for a static or shared
2595library file \var{lib} and return the full path to that file. If
2596\var{debug} is true, look for a debugging version (if that makes sense on
2597the current platform). Return \code{None} if \var{lib} wasn't found in any of
2598the specified directories.
2599\end{methoddesc}
2600
2601\begin{methoddesc}{has_function}{funcname \optional{, includes=\code{None}, include_dirs=\code{None}, libraries=\code{None}, library_dirs=\code{None}}}
2602Return a boolean indicating whether \var{funcname} is supported on
2603the current platform. The optional arguments can be used to
2604augment the compilation environment by providing additional include
2605files and paths and libraries and paths.
2606\end{methoddesc}
2607
2608\begin{methoddesc}{library_dir_option}{dir}
2609Return the compiler option to add \var{dir} to the list of
2610directories searched for libraries.
2611\end{methoddesc}
2612
2613\begin{methoddesc}{library_option}{lib}
2614Return the compiler option to add \var{dir} to the list of libraries
2615linked into the shared library or executable.
2616\end{methoddesc}
2617
2618\begin{methoddesc}{runtime_library_dir_option}{dir}
2619Return the compiler option to add \var{dir} to the list of
2620directories searched for runtime libraries.
2621\end{methoddesc}
2622
2623\begin{methoddesc}{set_executables}{**args}
2624Define the executables (and options for them) that will be run
2625to perform the various stages of compilation. The exact set of
2626executables that may be specified here depends on the compiler
2627class (via the 'executables' class attribute), but most will have:
2628
2629\begin{tableii}{l|l}{attribute}{attribute}{description}
2630\lineii{compiler}{the C/\Cpp{} compiler}
2631\lineii{linker_so}{linker used to create shared objects and libraries}
2632\lineii{linker_exe}{linker used to create binary executables}
2633\lineii{archiver}{static library creator}
2634\end{tableii}
2635
2636On platforms with a command-line (\UNIX, DOS/Windows), each of these
2637is a string that will be split into executable name and (optional)
2638list of arguments. (Splitting the string is done similarly to how
2639\UNIX{} shells operate: words are delimited by spaces, but quotes and
2640backslashes can override this. See
2641\function{distutils.util.split_quoted()}.)
2642\end{methoddesc}
2643
2644The following methods invoke stages in the build process.
2645
2646\begin{methoddesc}{compile}{sources\optional{, output_dir=\code{None}, macros=\code{None}, include_dirs=\code{None}, debug=\code{0}, extra_preargs=\code{None}, extra_postargs=\code{None}, depends=\code{None}}}
2647Compile one or more source files. Generates object files (e.g.
2648transforms a \file{.c} file to a \file{.o} file.)
2649
2650\var{sources} must be a list of filenames, most likely C/\Cpp
2651files, but in reality anything that can be handled by a
2652particular compiler and compiler class (eg. \class{MSVCCompiler} can
2653handle resource files in \var{sources}). Return a list of object
2654filenames, one per source filename in \var{sources}. Depending on
2655the implementation, not all source files will necessarily be
2656compiled, but all corresponding object filenames will be
2657returned.
2658
2659If \var{output_dir} is given, object files will be put under it, while
2660retaining their original path component. That is, \file{foo/bar.c}
2661normally compiles to \file{foo/bar.o} (for a \UNIX{} implementation); if
2662\var{output_dir} is \var{build}, then it would compile to
2663\file{build/foo/bar.o}.
2664
2665\var{macros}, if given, must be a list of macro definitions. A macro
Fred Drake9687b4d2005-03-10 03:48:14 +00002666definition is either a \code{(\var{name}, \var{value})} 2-tuple or a
2667\code{(\var{name},)} 1-tuple.
Fred Drake6fca7cc2004-03-23 18:43:03 +00002668The former defines a macro; if the value is \code{None}, the macro is
2669defined without an explicit value. The 1-tuple case undefines a
2670macro. Later definitions/redefinitions/undefinitions take
2671precedence.
2672
2673\var{include_dirs}, if given, must be a list of strings, the
2674directories to add to the default include file search path for this
2675compilation only.
2676
2677\var{debug} is a boolean; if true, the compiler will be instructed to
2678output debug symbols in (or alongside) the object file(s).
2679
Fred Drake9687b4d2005-03-10 03:48:14 +00002680\var{extra_preargs} and \var{extra_postargs} are implementation-dependent.
Fred Drake6fca7cc2004-03-23 18:43:03 +00002681On platforms that have the notion of a command-line (e.g. \UNIX,
2682DOS/Windows), they are most likely lists of strings: extra
Raymond Hettinger68804312005-01-01 00:28:46 +00002683command-line arguments to prepend/append to the compiler command
Fred Drake6fca7cc2004-03-23 18:43:03 +00002684line. On other platforms, consult the implementation class
2685documentation. In any event, they are intended as an escape hatch
2686for those occasions when the abstract compiler framework doesn't
2687cut the mustard.
2688
2689\var{depends}, if given, is a list of filenames that all targets
2690depend on. If a source file is older than any file in
2691depends, then the source file will be recompiled. This
2692supports dependency tracking, but only at a coarse
2693granularity.
2694
2695Raises \exception{CompileError} on failure.
2696\end{methoddesc}
2697
2698\begin{methoddesc}{create_static_lib}{objects, output_libname\optional{, output_dir=\code{None}, debug=\code{0}, target_lang=\code{None}}}
2699Link a bunch of stuff together to create a static library file.
2700The ``bunch of stuff'' consists of the list of object files supplied
2701as \var{objects}, the extra object files supplied to
2702\method{add_link_object()} and/or \method{set_link_objects()}, the libraries
2703supplied to \method{add_library()} and/or \method{set_libraries()}, and the
2704libraries supplied as \var{libraries} (if any).
2705
2706\var{output_libname} should be a library name, not a filename; the
2707filename will be inferred from the library name. \var{output_dir} is
2708the directory where the library file will be put. XXX defaults to what?
2709
2710\var{debug} is a boolean; if true, debugging information will be
2711included in the library (note that on most platforms, it is the
2712compile step where this matters: the \var{debug} flag is included here
2713just for consistency).
2714
2715\var{target_lang} is the target language for which the given objects
2716are being compiled. This allows specific linkage time treatment of
2717certain languages.
2718
2719Raises \exception{LibError} on failure.
2720\end{methoddesc}
2721
2722\begin{methoddesc}{link}{target_desc, objects, output_filename\optional{, output_dir=\code{None}, libraries=\code{None}, library_dirs=\code{None}, runtime_library_dirs=\code{None}, export_symbols=\code{None}, debug=\code{0}, extra_preargs=\code{None}, extra_postargs=\code{None}, build_temp=\code{None}, target_lang=\code{None}}}
2723Link a bunch of stuff together to create an executable or
2724shared library file.
2725
2726The ``bunch of stuff'' consists of the list of object files supplied
2727as \var{objects}. \var{output_filename} should be a filename. If
2728\var{output_dir} is supplied, \var{output_filename} is relative to it
2729(i.e. \var{output_filename} can provide directory components if
2730needed).
2731
2732\var{libraries} is a list of libraries to link against. These are
2733library names, not filenames, since they're translated into
2734filenames in a platform-specific way (eg. \var{foo} becomes \file{libfoo.a}
2735on \UNIX{} and \file{foo.lib} on DOS/Windows). However, they can include a
2736directory component, which means the linker will look in that
2737specific directory rather than searching all the normal locations.
2738
2739\var{library_dirs}, if supplied, should be a list of directories to
2740search for libraries that were specified as bare library names
2741(ie. no directory component). These are on top of the system
2742default and those supplied to \method{add_library_dir()} and/or
2743\method{set_library_dirs()}. \var{runtime_library_dirs} is a list of
2744directories that will be embedded into the shared library and used
2745to search for other shared libraries that *it* depends on at
2746run-time. (This may only be relevant on \UNIX.)
2747
2748\var{export_symbols} is a list of symbols that the shared library will
2749export. (This appears to be relevant only on Windows.)
2750
2751\var{debug} is as for \method{compile()} and \method{create_static_lib()},
2752with the slight distinction that it actually matters on most platforms (as
2753opposed to \method{create_static_lib()}, which includes a \var{debug} flag
2754mostly for form's sake).
2755
2756\var{extra_preargs} and \var{extra_postargs} are as for \method{compile()}
2757(except of course that they supply command-line arguments for the
2758particular linker being used).
2759
2760\var{target_lang} is the target language for which the given objects
2761are being compiled. This allows specific linkage time treatment of
2762certain languages.
2763
2764Raises \exception{LinkError} on failure.
2765\end{methoddesc}
2766
2767\begin{methoddesc}{link_executable}{objects, output_progname\optional{, output_dir=\code{None}, libraries=\code{None}, library_dirs=\code{None}, runtime_library_dirs=\code{None}, debug=\code{0}, extra_preargs=\code{None}, extra_postargs=\code{None}, target_lang=\code{None}}}
2768Link an executable.
2769\var{output_progname} is the name of the file executable,
2770while \var{objects} are a list of object filenames to link in. Other arguments
2771are as for the \method{link} method.
2772\end{methoddesc}
2773
2774\begin{methoddesc}{link_shared_lib}{objects, output_libname\optional{, output_dir=\code{None}, libraries=\code{None}, library_dirs=\code{None}, runtime_library_dirs=\code{None}, export_symbols=\code{None}, debug=\code{0}, extra_preargs=\code{None}, extra_postargs=\code{None}, build_temp=\code{None}, target_lang=\code{None}}}
2775Link a shared library. \var{output_libname} is the name of the output
2776library, while \var{objects} is a list of object filenames to link in.
2777Other arguments are as for the \method{link} method.
2778\end{methoddesc}
2779
2780\begin{methoddesc}{link_shared_object}{objects, output_filename\optional{, output_dir=\code{None}, libraries=\code{None}, library_dirs=\code{None}, runtime_library_dirs=\code{None}, export_symbols=\code{None}, debug=\code{0}, extra_preargs=\code{None}, extra_postargs=\code{None}, build_temp=\code{None}, target_lang=\code{None}}}
2781Link a shared object. \var{output_filename} is the name of the shared object
2782that will be created, while \var{objects} is a list of object filenames
2783to link in. Other arguments are as for the \method{link} method.
2784\end{methoddesc}
2785
2786\begin{methoddesc}{preprocess}{source\optional{, output_file=\code{None}, macros=\code{None}, include_dirs=\code{None}, extra_preargs=\code{None}, extra_postargs=\code{None}}}
2787Preprocess a single C/\Cpp{} source file, named in \var{source}.
2788Output will be written to file named \var{output_file}, or \var{stdout} if
2789\var{output_file} not supplied. \var{macros} is a list of macro
2790definitions as for \method{compile()}, which will augment the macros set
2791with \method{define_macro()} and \method{undefine_macro()}.
2792\var{include_dirs} is a list of directory names that will be added to the
2793default list, in the same way as \method{add_include_dir()}.
2794
2795Raises \exception{PreprocessError} on failure.
2796\end{methoddesc}
2797
2798The following utility methods are defined by the \class{CCompiler} class,
2799for use by the various concrete subclasses.
2800
2801\begin{methoddesc}{executable_filename}{basename\optional{, strip_dir=\code{0}, output_dir=\code{''}}}
2802Returns the filename of the executable for the given \var{basename}.
2803Typically for non-Windows platforms this is the same as the basename,
2804while Windows will get a \file{.exe} added.
2805\end{methoddesc}
2806
2807\begin{methoddesc}{library_filename}{libname\optional{, lib_type=\code{'static'}, strip_dir=\code{0}, output_dir=\code{''}}}
2808Returns the filename for the given library name on the current platform.
2809On \UNIX{} a library with \var{lib_type} of \code{'static'} will typically
2810be of the form \file{liblibname.a}, while a \var{lib_type} of \code{'dynamic'}
2811will be of the form \file{liblibname.so}.
2812\end{methoddesc}
2813
2814\begin{methoddesc}{object_filenames}{source_filenames\optional{, strip_dir=\code{0}, output_dir=\code{''}}}
2815Returns the name of the object files for the given source files.
2816\var{source_filenames} should be a list of filenames.
2817\end{methoddesc}
2818
2819\begin{methoddesc}{shared_object_filename}{basename\optional{, strip_dir=\code{0}, output_dir=\code{''}}}
2820Returns the name of a shared object file for the given file name \var{basename}.
2821\end{methoddesc}
2822
2823\begin{methoddesc}{execute}{func, args\optional{, msg=\code{None}, level=\code{1}}}
2824Invokes \function{distutils.util.execute()} This method invokes a
2825Python function \var{func} with the given arguments \var{args}, after
2826logging and taking into account the \var{dry_run} flag. XXX see also.
2827\end{methoddesc}
2828
2829\begin{methoddesc}{spawn}{cmd}
2830Invokes \function{distutils.util.spawn()}. This invokes an external
2831process to run the given command. XXX see also.
2832\end{methoddesc}
2833
2834\begin{methoddesc}{mkpath}{name\optional{, mode=\code{511}}}
2835
2836Invokes \function{distutils.dir_util.mkpath()}. This creates a directory
2837and any missing ancestor directories. XXX see also.
2838\end{methoddesc}
2839
2840\begin{methoddesc}{move_file}{src, dst}
2841Invokes \method{distutils.file_util.move_file()}. Renames \var{src} to
2842\var{dst}. XXX see also.
2843\end{methoddesc}
2844
2845\begin{methoddesc}{announce}{msg\optional{, level=\code{1}}}
2846Write a message using \function{distutils.log.debug()}. XXX see also.
2847\end{methoddesc}
2848
2849\begin{methoddesc}{warn}{msg}
2850Write a warning message \var{msg} to standard error.
2851\end{methoddesc}
2852
2853\begin{methoddesc}{debug_print}{msg}
2854If the \var{debug} flag is set on this \class{CCompiler} instance, print
2855\var{msg} to standard output, otherwise do nothing.
2856\end{methoddesc}
2857
2858\end{classdesc}
2859
2860%\subsection{Compiler-specific modules}
2861%
2862%The following modules implement concrete subclasses of the abstract
2863%\class{CCompiler} class. They should not be instantiated directly, but should
2864%be created using \function{distutils.ccompiler.new_compiler()} factory
2865%function.
2866
2867\section{\module{distutils.unixccompiler} --- Unix C Compiler}
2868\declaremodule{standard}{distutils.unixccompiler}
2869\modulesynopsis{UNIX C Compiler}
2870
2871This module provides the \class{UnixCCompiler} class, a subclass of
2872\class{CCompiler} that handles the typical \UNIX-style command-line
2873C compiler:
2874
2875\begin{itemize}
2876\item macros defined with \programopt{-D\var{name}\optional{=value}}
2877\item macros undefined with \programopt{-U\var{name}}
2878\item include search directories specified with
2879 \programopt{-I\var{dir}}
2880\item libraries specified with \programopt{-l\var{lib}}
2881\item library search directories specified with \programopt{-L\var{dir}}
2882\item compile handled by \program{cc} (or similar) executable with
2883 \programopt{-c} option: compiles \file{.c} to \file{.o}
2884\item link static library handled by \program{ar} command (possibly
2885 with \program{ranlib})
2886\item link shared library handled by \program{cc} \programopt{-shared}
2887\end{itemize}
2888
2889\section{\module{distutils.msvccompiler} --- Microsoft Compiler}
2890\declaremodule{standard}{distutils.msvccompiler}
2891\modulesynopsis{Microsoft Compiler}
2892
2893This module provides \class{MSVCCompiler}, an implementation of the abstract
Thomas Wouters0e3f5912006-08-11 14:57:12 +00002894\class{CCompiler} class for Microsoft Visual Studio. Typically, extension
2895modules need to be compiled with the same compiler that was used to compile
2896Python. For Python 2.3 and earlier, the compiler was Visual Studio 6. For
2897Python 2.4 and 2.5, the compiler is Visual Studio .NET 2003. The AMD64
2898and Itanium binaries are created using the Platform SDK.
2899
2900\class{MSVCCompiler} will normally choose the right compiler, linker etc.
2901on its own. To override this choice, the environment variables
2902\var{DISTUTILS\_USE\_SDK} and \var{MSSdk} must be both set. \var{MSSdk}
2903indicates that the current environment has been setup by the SDK's
2904\code{SetEnv.Cmd} script, or that the environment variables had been
2905registered when the SDK was installed; \var{DISTUTILS\_USE\_SDK} indicates
2906that the distutils user has made an explicit choice to override the
2907compiler selection by \class{MSVCCompiler}.
Fred Drake6fca7cc2004-03-23 18:43:03 +00002908
2909\section{\module{distutils.bcppcompiler} --- Borland Compiler}
2910\declaremodule{standard}{distutils.bcppcompiler}
2911This module provides \class{BorlandCCompiler}, an subclass of the abstract \class{CCompiler} class for the Borland \Cpp{} compiler.
2912
2913\section{\module{distutils.cygwincompiler} --- Cygwin Compiler}
2914\declaremodule{standard}{distutils.cygwinccompiler}
2915
2916This module provides the \class{CygwinCCompiler} class, a subclass of \class{UnixCCompiler} that
2917handles the Cygwin port of the GNU C compiler to Windows. It also contains
2918the Mingw32CCompiler class which handles the mingw32 port of GCC (same as
2919cygwin in no-cygwin mode).
2920
2921\section{\module{distutils.emxccompiler} --- OS/2 EMX Compiler}
2922\declaremodule{standard}{distutils.emxccompiler}
2923\modulesynopsis{OS/2 EMX Compiler support}
2924
2925This module provides the EMXCCompiler class, a subclass of \class{UnixCCompiler} that handles the EMX port of the GNU C compiler to OS/2.
2926
2927\section{\module{distutils.mwerkscompiler} --- Metrowerks CodeWarrior support}
2928\declaremodule{standard}{distutils.mwerkscompiler}
2929\modulesynopsis{Metrowerks CodeWarrior support}
2930
2931Contains \class{MWerksCompiler}, an implementation of the abstract
Brett Cannon7706c2d2005-02-13 22:50:04 +00002932\class{CCompiler} class for MetroWerks CodeWarrior on the pre-Mac OS X Macintosh.
2933Needs work to support CW on Windows or Mac OS X.
Fred Drake6fca7cc2004-03-23 18:43:03 +00002934
2935
2936%\subsection{Utility modules}
2937%
2938%The following modules all provide general utility functions. They haven't
2939%all been documented yet.
2940
2941\section{\module{distutils.archive_util} ---
2942 Archiving utilities}
2943\declaremodule[distutils.archiveutil]{standard}{distutils.archive_util}
2944\modulesynopsis{Utility functions for creating archive files (tarballs, zip files, ...)}
2945
2946This module provides a few functions for creating archive files, such as
2947tarballs or zipfiles.
2948
2949\begin{funcdesc}{make_archive}{base_name, format\optional{, root_dir=\code{None}, base_dir=\code{None}, verbose=\code{0}, dry_run=\code{0}}}
2950Create an archive file (eg. \code{zip} or \code{tar}). \var{base_name}
2951is the name of the file to create, minus any format-specific extension;
2952\var{format} is the archive format: one of \code{zip}, \code{tar},
2953\code{ztar}, or \code{gztar}.
2954\var{root_dir} is a directory that will be the root directory of the
2955archive; ie. we typically \code{chdir} into \var{root_dir} before
2956creating the archive. \var{base_dir} is the directory where we start
2957archiving from; ie. \var{base_dir} will be the common prefix of all files and
2958directories in the archive. \var{root_dir} and \var{base_dir} both default
2959to the current directory. Returns the name of the archive file.
2960
2961\warning{This should be changed to support bz2 files}
2962\end{funcdesc}
2963
2964\begin{funcdesc}{make_tarball}{base_name, base_dir\optional{, compress=\code{'gzip'}, verbose=\code{0}, dry_run=\code{0}}}'Create an (optional compressed) archive as a tar file from all files in and under \var{base_dir}. \var{compress} must be \code{'gzip'} (the default),
Fred Drake9687b4d2005-03-10 03:48:14 +00002965\code{'compress'}, \code{'bzip2'}, or \code{None}. Both \program{tar}
2966and the compression utility named by \var{compress} must be on the
Fred Drake6fca7cc2004-03-23 18:43:03 +00002967default program search path, so this is probably \UNIX-specific. The
2968output tar file will be named \file{\var{base_dir}.tar}, possibly plus
2969the appropriate compression extension (\file{.gz}, \file{.bz2} or
2970\file{.Z}). Return the output filename.
2971
2972\warning{This should be replaced with calls to the \module{tarfile} module.}
2973\end{funcdesc}
2974
2975\begin{funcdesc}{make_zipfile}{base_name, base_dir\optional{, verbose=\code{0}, dry_run=\code{0}}}
2976Create a zip file from all files in and under \var{base_dir}. The output
2977zip file will be named \var{base_dir} + \file{.zip}. Uses either the
2978\module{zipfile} Python module (if available) or the InfoZIP \file{zip}
2979utility (if installed and found on the default search path). If neither
2980tool is available, raises \exception{DistutilsExecError}.
2981Returns the name of the output zip file.
2982\end{funcdesc}
2983
2984\section{\module{distutils.dep_util} --- Dependency checking}
2985\declaremodule[distutils.deputil]{standard}{distutils.dep_util}
2986\modulesynopsis{Utility functions for simple dependency checking}
2987
2988This module provides functions for performing simple, timestamp-based
2989dependency of files and groups of files; also, functions based entirely
2990on such timestamp dependency analysis.
2991
2992\begin{funcdesc}{newer}{source, target}
2993Return true if \var{source} exists and is more recently modified than
2994\var{target}, or if \var{source} exists and \var{target} doesn't.
2995Return false if both exist and \var{target} is the same age or newer
2996than \var{source}.
2997Raise \exception{DistutilsFileError} if \var{source} does not exist.
2998\end{funcdesc}
2999
3000\begin{funcdesc}{newer_pairwise}{sources, targets}
3001Walk two filename lists in parallel, testing if each source is newer
3002than its corresponding target. Return a pair of lists (\var{sources},
3003\var{targets}) where source is newer than target, according to the semantics
3004of \function{newer()}
3005%% equivalent to a listcomp...
3006\end{funcdesc}
3007
3008\begin{funcdesc}{newer_group}{sources, target\optional{, missing=\code{'error'}}}
3009Return true if \var{target} is out-of-date with respect to any file
3010listed in \var{sources} In other words, if \var{target} exists and is newer
3011than every file in \var{sources}, return false; otherwise return true.
3012\var{missing} controls what we do when a source file is missing; the
3013default (\code{'error'}) is to blow up with an \exception{OSError} from
3014inside \function{os.stat()};
3015if it is \code{'ignore'}, we silently drop any missing source files; if it is
3016\code{'newer'}, any missing source files make us assume that \var{target} is
3017out-of-date (this is handy in ``dry-run'' mode: it'll make you pretend to
3018carry out commands that wouldn't work because inputs are missing, but
3019that doesn't matter because you're not actually going to run the
3020commands).
3021\end{funcdesc}
3022
3023\section{\module{distutils.dir_util} --- Directory tree operations}
3024\declaremodule[distutils.dirutil]{standard}{distutils.dir_util}
3025\modulesynopsis{Utility functions for operating on directories and directory trees}
3026
3027This module provides functions for operating on directories and trees
3028of directories.
3029
3030\begin{funcdesc}{mkpath}{name\optional{, mode=\code{0777}, verbose=\code{0}, dry_run=\code{0}}}
3031Create a directory and any missing ancestor directories. If the
3032directory already exists (or if \var{name} is the empty string, which
3033means the current directory, which of course exists), then do
3034nothing. Raise \exception{DistutilsFileError} if unable to create some
3035directory along the way (eg. some sub-path exists, but is a file
3036rather than a directory). If \var{verbose} is true, print a one-line
3037summary of each mkdir to stdout. Return the list of directories
3038actually created.
3039\end{funcdesc}
3040
3041\begin{funcdesc}{create_tree}{base_dir, files\optional{, mode=\code{0777}, verbose=\code{0}, dry_run=\code{0}}}
3042Create all the empty directories under \var{base_dir} needed to
3043put \var{files} there. \var{base_dir} is just the a name of a directory
3044which doesn't necessarily exist yet; \var{files} is a list of filenames
3045to be interpreted relative to \var{base_dir}. \var{base_dir} + the
3046directory portion of every file in \var{files} will be created if it
3047doesn't already exist. \var{mode}, \var{verbose} and \var{dry_run} flags
3048are as for \function{mkpath()}.
3049\end{funcdesc}
3050
3051\begin{funcdesc}{copy_tree}{src, dst\optional{preserve_mode=\code{1}, preserve_times=\code{1}, preserve_symlinks=\code{0}, update=\code{0}, verbose=\code{0}, dry_run=\code{0}}}
3052Copy an entire directory tree \var{src} to a new location \var{dst}. Both
3053\var{src} and \var{dst} must be directory names. If \var{src} is not a
3054directory, raise \exception{DistutilsFileError}. If \var{dst} does
Fred Drake9687b4d2005-03-10 03:48:14 +00003055not exist, it is created with \function{mkpath()}. The end result of the
Fred Drake6fca7cc2004-03-23 18:43:03 +00003056copy is that every file in \var{src} is copied to \var{dst}, and
3057directories under \var{src} are recursively copied to \var{dst}.
3058Return the list of files that were copied or might have been copied,
3059using their output name. The return value is unaffected by \var{update}
3060or \var{dry_run}: it is simply the list of all files under \var{src},
3061with the names changed to be under \var{dst}.
3062
3063\var{preserve_mode} and \var{preserve_times} are the same as for
3064\function{copy_file} in \refmodule[distutils.fileutil]{distutils.file_util};
3065note that they only apply to regular files, not to directories. If
3066\var{preserve_symlinks} is true, symlinks will be copied as symlinks
3067(on platforms that support them!); otherwise (the default), the
3068destination of the symlink will be copied. \var{update} and
3069\var{verbose} are the same as for
3070\function{copy_file()}.
3071\end{funcdesc}
3072
3073\begin{funcdesc}{remove_tree}{directory\optional{verbose=\code{0}, dry_run=\code{0}}}
3074Recursively remove \var{directory} and all files and directories underneath
Fred Drake9687b4d2005-03-10 03:48:14 +00003075it. Any errors are ignored (apart from being reported to \code{sys.stdout} if
Fred Drake6fca7cc2004-03-23 18:43:03 +00003076\var{verbose} is true).
3077\end{funcdesc}
3078
3079\XXX{Some of this could be replaced with the shutil module?}
3080
3081\section{\module{distutils.file_util} --- Single file operations}
3082\declaremodule[distutils.fileutil]{standard}{distutils.file_util}
3083\modulesynopsis{Utility functions for operating on single files}
3084
3085This module contains some utility functions for operating on individual files.
3086
3087\begin{funcdesc}{copy_file}{src, dst\optional{preserve_mode=\code{1}, preserve_times=\code{1}, update=\code{0}, link=\code{None}, verbose=\code{0}, dry_run=\code{0}}}
3088Copy file \var{src} to \var{dst}. If \var{dst} is a directory, then
3089\var{src} is copied there with the same name; otherwise, it must be a
3090filename. (If the file exists, it will be ruthlessly clobbered.) If
3091\var{preserve_mode} is true (the default), the file's mode (type and
3092permission bits, or whatever is analogous on the current platform) is
3093copied. If \var{preserve_times} is true (the default), the last-modified
3094and last-access times are copied as well. If \var{update} is true,
3095\var{src} will only be copied if \var{dst} does not exist, or if
3096\var{dst} does exist but is older than \var{src}.
3097
3098\var{link} allows you to make hard links (using \function{os.link}) or
3099symbolic links (using \function{os.symlink}) instead of copying: set it
3100to \code{'hard'} or \code{'sym'}; if it is \code{None} (the default),
3101files are copied. Don't set \var{link} on systems that don't support
3102it: \function{copy_file()} doesn't check if hard or symbolic linking is
Fred Drake9687b4d2005-03-10 03:48:14 +00003103available. It uses \function{_copy_file_contents()} to copy file contents.
Fred Drake6fca7cc2004-03-23 18:43:03 +00003104
3105Return a tuple \samp{(dest_name, copied)}: \var{dest_name} is the actual
3106name of the output file, and \var{copied} is true if the file was copied
3107(or would have been copied, if \var{dry_run} true).
3108% XXX if the destination file already exists, we clobber it if
3109% copying, but blow up if linking. Hmmm. And I don't know what
3110% macostools.copyfile() does. Should definitely be consistent, and
3111% should probably blow up if destination exists and we would be
3112% changing it (ie. it's not already a hard/soft link to src OR
3113% (not update) and (src newer than dst)).
3114\end{funcdesc}
3115
3116\begin{funcdesc}{move_file}{src, dst\optional{verbose, dry_run}}
3117Move file \var{src} to \var{dst}. If \var{dst} is a directory, the file will
3118be moved into it with the same name; otherwise, \var{src} is just renamed
3119to \var{dst}. Returns the new full name of the file.
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003120\warning{Handles cross-device moves on \UNIX{} using \function{copy_file()}.
Fred Drake6fca7cc2004-03-23 18:43:03 +00003121What about other systems???}
3122\end{funcdesc}
3123
3124\begin{funcdesc}{write_file}{filename, contents}
3125Create a file called \var{filename} and write \var{contents} (a
3126sequence of strings without line terminators) to it.
3127\end{funcdesc}
3128
Thomas Heller949f6612004-06-18 06:55:28 +00003129\section{\module{distutils.util} --- Miscellaneous other utility functions}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003130\declaremodule{standard}{distutils.util}
3131\modulesynopsis{Miscellaneous other utility functions}
3132
3133This module contains other assorted bits and pieces that don't fit into
3134any other utility module.
3135
3136\begin{funcdesc}{get_platform}{}
3137Return a string that identifies the current platform. This is used
3138mainly to distinguish platform-specific build directories and
3139platform-specific built distributions. Typically includes the OS name
3140and version and the architecture (as supplied by 'os.uname()'),
3141although the exact information included depends on the OS; eg. for IRIX
3142the architecture isn't particularly important (IRIX only runs on SGI
3143hardware), but for Linux the kernel version isn't particularly
3144important.
3145
3146Examples of returned values:
3147\begin{itemize}
3148\item \code{linux-i586}
3149\item \code{linux-alpha}
3150\item \code{solaris-2.6-sun4u}
3151\item \code{irix-5.3}
3152\item \code{irix64-6.2}
3153\end{itemize}
3154
3155For non-\POSIX{} platforms, currently just returns \code{sys.platform}.
3156% XXX isn't this also provided by some other non-distutils module?
3157\end{funcdesc}
3158
3159\begin{funcdesc}{convert_path}{pathname}
3160Return 'pathname' as a name that will work on the native filesystem,
3161i.e. split it on '/' and put it back together again using the current
3162directory separator. Needed because filenames in the setup script are
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003163always supplied in \UNIX{} style, and have to be converted to the local
Fred Drake6fca7cc2004-03-23 18:43:03 +00003164convention before we can actually use them in the filesystem. Raises
3165\exception{ValueError} on non-\UNIX-ish systems if \var{pathname} either
3166starts or ends with a slash.
3167\end{funcdesc}
3168
3169\begin{funcdesc}{change_root}{new_root, pathname}
3170Return \var{pathname} with \var{new_root} prepended. If \var{pathname} is
3171relative, this is equivalent to \samp{os.path.join(new_root,pathname)}
3172Otherwise, it requires making \var{pathname} relative and then joining the
Brett Cannon7706c2d2005-02-13 22:50:04 +00003173two, which is tricky on DOS/Windows.
Fred Drake6fca7cc2004-03-23 18:43:03 +00003174\end{funcdesc}
3175
3176\begin{funcdesc}{check_environ}{}
3177Ensure that 'os.environ' has all the environment variables we
3178guarantee that users can use in config files, command-line options,
3179etc. Currently this includes:
3180\begin{itemize}
3181\item \envvar{HOME} - user's home directory (\UNIX{} only)
3182\item \envvar{PLAT} - description of the current platform, including
3183 hardware and OS (see \function{get_platform()})
3184\end{itemize}
3185\end{funcdesc}
3186
3187\begin{funcdesc}{subst_vars}{s, local_vars}
3188Perform shell/Perl-style variable substitution on \var{s}. Every
3189occurrence of \code{\$} followed by a name is considered a variable, and
3190variable is substituted by the value found in the \var{local_vars}
3191dictionary, or in \code{os.environ} if it's not in \var{local_vars}.
3192\var{os.environ} is first checked/augmented to guarantee that it contains
3193certain values: see \function{check_environ()}. Raise \exception{ValueError}
3194for any variables not found in either \var{local_vars} or \code{os.environ}.
3195
3196Note that this is not a fully-fledged string interpolation function. A
3197valid \code{\$variable} can consist only of upper and lower case letters,
Guido van Rossumd8faa362007-04-27 19:54:29 +00003198numbers and an underscore. No \{ \} or ( ) style quoting is available.
Fred Drake6fca7cc2004-03-23 18:43:03 +00003199\end{funcdesc}
3200
3201\begin{funcdesc}{grok_environment_error}{exc\optional{, prefix=\samp{'error: '}}}
3202Generate a useful error message from an \exception{EnvironmentError}
3203(\exception{IOError} or \exception{OSError}) exception object.
3204Handles Python 1.5.1 and later styles, and does what it can to deal with
3205exception objects that don't have a filename (which happens when the error
3206is due to a two-file operation, such as \function{rename()} or
3207\function{link()}). Returns the error message as a string prefixed
3208with \var{prefix}.
3209\end{funcdesc}
3210
3211\begin{funcdesc}{split_quoted}{s}
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003212Split a string up according to \UNIX{} shell-like rules for quotes and
Fred Drake6fca7cc2004-03-23 18:43:03 +00003213backslashes. In short: words are delimited by spaces, as long as those
3214spaces are not escaped by a backslash, or inside a quoted string.
3215Single and double quotes are equivalent, and the quote characters can
3216be backslash-escaped. The backslash is stripped from any two-character
3217escape sequence, leaving only the escaped character. The quote
3218characters are stripped from any quoted string. Returns a list of
3219words.
3220% Should probably be moved into the standard library.
3221\end{funcdesc}
3222
3223\begin{funcdesc}{execute}{func, args\optional{, msg=\code{None}, verbose=\code{0}, dry_run=\code{0}}}
3224Perform some action that affects the outside world (for instance,
3225writing to the filesystem). Such actions are special because they
3226are disabled by the \var{dry_run} flag. This method takes
3227care of all that bureaucracy for you; all you have to do is supply the
3228function to call and an argument tuple for it (to embody the
3229``external action'' being performed), and an optional message to
3230print.
3231\end{funcdesc}
3232
3233\begin{funcdesc}{strtobool}{val}
3234Convert a string representation of truth to true (1) or false (0).
3235
3236True values are \code{y}, \code{yes}, \code{t}, \code{true}, \code{on}
3237and \code{1}; false values are \code{n}, \code{no}, \code{f}, \code{false},
3238\code{off} and \code{0}. Raises \exception{ValueError} if \var{val}
3239is anything else.
3240\end{funcdesc}
3241
3242\begin{funcdesc}{byte_compile}{py_files\optional{,
3243 optimize=\code{0}, force=\code{0},
3244 prefix=\code{None}, base_dir=\code{None},
3245 verbose=\code{1}, dry_run=\code{0},
3246 direct=\code{None}}}
3247Byte-compile a collection of Python source files to either \file{.pyc}
3248or \file{.pyo} files in the same directory. \var{py_files} is a list of files
3249to compile; any files that don't end in \file{.py} are silently skipped.
3250\var{optimize} must be one of the following:
3251\begin{itemize}
3252\item \code{0} - don't optimize (generate \file{.pyc})
3253\item \code{1} - normal optimization (like \samp{python -O})
3254\item \code{2} - extra optimization (like \samp{python -OO})
3255\end{itemize}
3256
3257If \var{force} is true, all files are recompiled regardless of
3258timestamps.
3259
3260The source filename encoded in each bytecode file defaults to the
3261filenames listed in \var{py_files}; you can modify these with \var{prefix} and
3262\var{basedir}. \var{prefix} is a string that will be stripped off of each
3263source filename, and \var{base_dir} is a directory name that will be
3264prepended (after \var{prefix} is stripped). You can supply either or both
3265(or neither) of \var{prefix} and \var{base_dir}, as you wish.
3266
3267If \var{dry_run} is true, doesn't actually do anything that would
3268affect the filesystem.
3269
3270Byte-compilation is either done directly in this interpreter process
3271with the standard \module{py_compile} module, or indirectly by writing a
3272temporary script and executing it. Normally, you should let
3273\function{byte_compile()} figure out to use direct compilation or not (see
3274the source for details). The \var{direct} flag is used by the script
3275generated in indirect mode; unless you know what you're doing, leave
3276it set to \code{None}.
3277\end{funcdesc}
3278
3279\begin{funcdesc}{rfc822_escape}{header}
3280Return a version of \var{header} escaped for inclusion in an
3281\rfc{822} header, by ensuring there are 8 spaces space after each newline.
3282Note that it does no other modification of the string.
3283% this _can_ be replaced
3284\end{funcdesc}
3285
3286%\subsection{Distutils objects}
3287
3288\section{\module{distutils.dist} --- The Distribution class}
3289\declaremodule{standard}{distutils.dist}
3290\modulesynopsis{Provides the Distribution class, which represents the
3291 module distribution being built/installed/distributed}
3292
3293This module provides the \class{Distribution} class, which represents
3294the module distribution being built/installed/distributed.
3295
3296
3297\section{\module{distutils.extension} --- The Extension class}
3298\declaremodule{standard}{distutils.extension}
3299\modulesynopsis{Provides the Extension class, used to describe
3300 C/\Cpp{} extension modules in setup scripts}
3301
3302This module provides the \class{Extension} class, used to describe
3303C/\Cpp{} extension modules in setup scripts.
3304
3305%\subsection{Ungrouped modules}
3306%The following haven't been moved into a more appropriate section yet.
3307
3308\section{\module{distutils.debug} --- Distutils debug mode}
3309\declaremodule{standard}{distutils.debug}
3310\modulesynopsis{Provides the debug flag for distutils}
3311
3312This module provides the DEBUG flag.
3313
3314\section{\module{distutils.errors} --- Distutils exceptions}
3315\declaremodule{standard}{distutils.errors}
3316\modulesynopsis{Provides standard distutils exceptions}
3317
3318Provides exceptions used by the Distutils modules. Note that Distutils
3319modules may raise standard exceptions; in particular, SystemExit is
3320usually raised for errors that are obviously the end-user's fault
3321(eg. bad command-line arguments).
3322
3323This module is safe to use in \samp{from ... import *} mode; it only exports
3324symbols whose names start with \code{Distutils} and end with \code{Error}.
3325
3326\section{\module{distutils.fancy_getopt}
3327 --- Wrapper around the standard getopt module}
3328\declaremodule[distutils.fancygetopt]{standard}{distutils.fancy_getopt}
3329\modulesynopsis{Additional \module{getopt} functionality}
3330
3331This module provides a wrapper around the standard \module{getopt}
3332module that provides the following additional features:
3333
3334\begin{itemize}
3335\item short and long options are tied together
3336\item options have help strings, so \function{fancy_getopt} could potentially
3337create a complete usage summary
3338\item options set attributes of a passed-in object
3339\item boolean options can have ``negative aliases'' --- eg. if
3340\longprogramopt{quiet} is the ``negative alias'' of
3341\longprogramopt{verbose}, then \longprogramopt{quiet} on the command
3342line sets \var{verbose} to false.
3343
3344\end{itemize}
3345
3346\XXX{Should be replaced with \module{optik} (which is also now
3347known as \module{optparse} in Python 2.3 and later).}
3348
3349\begin{funcdesc}{fancy_getopt}{options, negative_opt, object, args}
3350Wrapper function. \var{options} is a list of
3351\samp{(long_option, short_option, help_string)} 3-tuples as described in the
3352constructor for \class{FancyGetopt}. \var{negative_opt} should be a dictionary
3353mapping option names to option names, both the key and value should be in the
3354\var{options} list. \var{object} is an object which will be used to store
3355values (see the \method{getopt()} method of the \class{FancyGetopt} class).
3356\var{args} is the argument list. Will use \code{sys.argv[1:]} if you
3357pass \code{None} as \var{args}.
3358\end{funcdesc}
3359
3360\begin{funcdesc}{wrap_text}{text, width}
3361Wraps \var{text} to less than \var{width} wide.
3362
3363\warning{Should be replaced with \module{textwrap} (which is available
3364in Python 2.3 and later).}
3365\end{funcdesc}
3366
3367\begin{classdesc}{FancyGetopt}{\optional{option_table=\code{None}}}
3368The option_table is a list of 3-tuples: \samp{(long_option,
3369short_option, help_string)}
3370
Georg Brandl7eb4b7d2005-07-22 21:49:32 +00003371If an option takes an argument, its \var{long_option} should have \code{'='}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003372appended; \var{short_option} should just be a single character, no \code{':'}
3373in any case. \var{short_option} should be \code{None} if a \var{long_option}
3374doesn't have a corresponding \var{short_option}. All option tuples must have
3375long options.
3376\end{classdesc}
3377
3378The \class{FancyGetopt} class provides the following methods:
3379
3380\begin{methoddesc}{getopt}{\optional{args=\code{None}, object=\code{None}}}
3381Parse command-line options in args. Store as attributes on \var{object}.
3382
3383If \var{args} is \code{None} or not supplied, uses \code{sys.argv[1:]}. If
3384\var{object} is \code{None} or not supplied, creates a new \class{OptionDummy}
3385instance, stores option values there, and returns a tuple \samp{(args,
3386object)}. If \var{object} is supplied, it is modified in place and
3387\function{getopt()} just returns \var{args}; in both cases, the returned
3388\var{args} is a modified copy of the passed-in \var{args} list, which
3389is left untouched.
3390% and args returned are?
3391\end{methoddesc}
3392
3393\begin{methoddesc}{get_option_order}{}
3394Returns the list of \samp{(option, value)} tuples processed by the
3395previous run of \method{getopt()} Raises \exception{RuntimeError} if
3396\method{getopt()} hasn't been called yet.
3397\end{methoddesc}
3398
3399\begin{methoddesc}{generate_help}{\optional{header=\code{None}}}
3400Generate help text (a list of strings, one per suggested line of
3401output) from the option table for this \class{FancyGetopt} object.
3402
3403If supplied, prints the supplied \var{header} at the top of the help.
3404\end{methoddesc}
3405
3406\section{\module{distutils.filelist} --- The FileList class}
3407\declaremodule{standard}{distutils.filelist}
3408\modulesynopsis{The \class{FileList} class, used for poking about the
3409 file system and building lists of files.}
3410
3411This module provides the \class{FileList} class, used for poking about
3412the filesystem and building lists of files.
3413
3414
3415\section{\module{distutils.log} --- Simple PEP 282-style logging}
3416\declaremodule{standard}{distutils.log}
3417\modulesynopsis{A simple logging mechanism, \pep{282}-style}
3418
3419\warning{Should be replaced with standard \module{logging} module.}
3420
3421%\subsubsection{\module{} --- }
3422%\declaremodule{standard}{distutils.magic}
3423%\modulesynopsis{ }
3424
3425
3426\section{\module{distutils.spawn} --- Spawn a sub-process}
3427\declaremodule{standard}{distutils.spawn}
3428\modulesynopsis{Provides the spawn() function}
3429
3430This module provides the \function{spawn()} function, a front-end to
3431various platform-specific functions for launching another program in a
3432sub-process.
3433Also provides \function{find_executable()} to search the path for a given
3434executable name.
3435
3436
Fred Drakeab70b382001-08-02 15:13:15 +00003437\input{sysconfig}
Greg Ward16aafcd2000-04-09 04:06:44 +00003438
3439
Fred Drake6fca7cc2004-03-23 18:43:03 +00003440\section{\module{distutils.text_file} --- The TextFile class}
3441\declaremodule[distutils.textfile]{standard}{distutils.text_file}
3442\modulesynopsis{provides the TextFile class, a simple interface to text files}
3443
3444This module provides the \class{TextFile} class, which gives an interface
3445to text files that (optionally) takes care of stripping comments, ignoring
3446blank lines, and joining lines with backslashes.
3447
3448\begin{classdesc}{TextFile}{\optional{filename=\code{None}, file=\code{None}, **options}}
3449This class provides a file-like object that takes care of all
3450the things you commonly want to do when processing a text file
3451that has some line-by-line syntax: strip comments (as long as \code{\#}
3452is your comment character), skip blank lines, join adjacent lines by
3453escaping the newline (ie. backslash at end of line), strip
3454leading and/or trailing whitespace. All of these are optional
3455and independently controllable.
3456
3457The class provides a \method{warn()} method so you can generate
3458warning messages that report physical line number, even if the
3459logical line in question spans multiple physical lines. Also
3460provides \method{unreadline()} for implementing line-at-a-time lookahead.
3461
3462\class{TextFile} instances are create with either \var{filename}, \var{file},
3463or both. \exception{RuntimeError} is raised if both are \code{None}.
3464\var{filename} should be a string, and \var{file} a file object (or
3465something that provides \method{readline()} and \method{close()}
3466methods). It is recommended that you supply at least \var{filename},
3467so that \class{TextFile} can include it in warning messages. If
Fred Drake9687b4d2005-03-10 03:48:14 +00003468\var{file} is not supplied, \class{TextFile} creates its own using the
3469\function{open()} built-in function.
Fred Drake6fca7cc2004-03-23 18:43:03 +00003470
3471The options are all boolean, and affect the values returned by
Fred Drake9687b4d2005-03-10 03:48:14 +00003472\method{readline()}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003473
3474\begin{tableiii}{c|l|l}{option name}{option name}{description}{default}
3475\lineiii{strip_comments}{
3476strip from \character{\#} to end-of-line, as well as any whitespace
3477leading up to the \character{\#}---unless it is escaped by a backslash}
3478{true}
3479\lineiii{lstrip_ws}{
3480strip leading whitespace from each line before returning it}
3481{false}
3482\lineiii{rstrip_ws}{
3483strip trailing whitespace (including line terminator!) from
3484each line before returning it.}
3485{true}
3486\lineiii{skip_blanks}{
3487skip lines that are empty *after* stripping comments and
3488whitespace. (If both lstrip_ws and rstrip_ws are false,
3489then some lines may consist of solely whitespace: these will
3490*not* be skipped, even if \var{skip_blanks} is true.)}
3491{true}
3492\lineiii{join_lines}{
3493if a backslash is the last non-newline character on a line
3494after stripping comments and whitespace, join the following line
3495to it to form one logical line; if N consecutive lines end
3496with a backslash, then N+1 physical lines will be joined to
3497form one logical line.}
3498{false}
3499\lineiii{collapse_join}{
3500strip leading whitespace from lines that are joined to their
3501predecessor; only matters if \samp{(join_lines and not lstrip_ws)}}
3502{false}
3503\end{tableiii}
3504
3505Note that since \var{rstrip_ws} can strip the trailing newline, the
3506semantics of \method{readline()} must differ from those of the builtin file
3507object's \method{readline()} method! In particular, \method{readline()}
3508returns \code{None} for end-of-file: an empty string might just be a
3509blank line (or an all-whitespace line), if \var{rstrip_ws} is true
3510but \var{skip_blanks} is not.
3511
3512\begin{methoddesc}{open}{filename}
3513Open a new file \var{filename}. This overrides any \var{file} or
3514\var{filename} constructor arguments.
3515\end{methoddesc}
3516
3517\begin{methoddesc}{close}{}
3518Close the current file and forget everything we know about it (including
3519the filename and the current line number).
3520\end{methoddesc}
3521
3522\begin{methoddesc}{warn}{msg\optional{,line=\code{None}}}
3523Print (to stderr) a warning message tied to the current logical
3524line in the current file. If the current logical line in the
3525file spans multiple physical lines, the warning refers to the
3526whole range, such as \samp{"lines 3-5"}. If \var{line} is supplied,
3527it overrides the current line number; it may be a list or tuple
3528to indicate a range of physical lines, or an integer for a
3529single physical line.
3530\end{methoddesc}
3531
3532\begin{methoddesc}{readline}{}
3533Read and return a single logical line from the current file (or
3534from an internal buffer if lines have previously been ``unread''
3535with \method{unreadline()}). If the \var{join_lines} option
3536is true, this may involve reading multiple physical lines
3537concatenated into a single string. Updates the current line number,
3538so calling \method{warn()} after \method{readline()} emits a warning
3539about the physical line(s) just read. Returns \code{None} on end-of-file,
3540since the empty string can occur if \var{rstrip_ws} is true but
3541\var{strip_blanks} is not.
3542\end{methoddesc}
3543\begin{methoddesc}{readlines}{}
3544Read and return the list of all logical lines remaining in the current file.
3545This updates the current line number to the last line of the file.
3546\end{methoddesc}
3547\begin{methoddesc}{unreadline}{line}
3548Push \var{line} (a string) onto an internal buffer that will be
3549checked by future \method{readline()} calls. Handy for implementing
3550a parser with line-at-a-time lookahead. Note that lines that are ``unread''
3551with \method{unreadline} are not subsequently re-cleansed (whitespace
3552stripped, or whatever) when read with \method{readline}. If multiple
3553calls are made to \method{unreadline} before a call to \method{readline},
3554the lines will be returned most in most recent first order.
3555\end{methoddesc}
3556
3557\end{classdesc}
3558
3559
3560\section{\module{distutils.version} --- Version number classes}
3561\declaremodule{standard}{distutils.version}
3562\modulesynopsis{implements classes that represent module version numbers. }
3563
3564% todo
3565
3566%\section{Distutils Commands}
3567%
3568%This part of Distutils implements the various Distutils commands, such
3569%as \code{build}, \code{install} \&c. Each command is implemented as a
3570%separate module, with the command name as the name of the module.
3571
3572\section{\module{distutils.cmd} --- Abstract base class for Distutils commands}
3573\declaremodule{standard}{distutils.cmd}
3574\modulesynopsis{This module provides the abstract base class Command. This
3575class is subclassed by the modules in the \refmodule{distutils.command}
3576subpackage. }
3577
3578This module supplies the abstract base class \class{Command}.
3579
3580\begin{classdesc}{Command}{dist}
3581Abstract base class for defining command classes, the ``worker bees''
3582of the Distutils. A useful analogy for command classes is to think of
3583them as subroutines with local variables called \var{options}. The
3584options are declared in \method{initialize_options()} and defined
3585(given their final values) in \method{finalize_options()}, both of
3586which must be defined by every command class. The distinction between
3587the two is necessary because option values might come from the outside
3588world (command line, config file, ...), and any options dependent on
3589other options must be computed after these outside influences have
3590been processed --- hence \method{finalize_options()}. The body of the
3591subroutine, where it does all its work based on the values of its
3592options, is the \method{run()} method, which must also be implemented
3593by every command class.
3594
3595The class constructor takes a single argument \var{dist}, a
3596\class{Distribution} instance.
3597\end{classdesc}
3598
3599
3600\section{\module{distutils.command} --- Individual Distutils commands}
3601\declaremodule{standard}{distutils.command}
3602\modulesynopsis{This subpackage contains one module for each standard Distutils command.}
3603
3604%\subsubsection{Individual Distutils commands}
3605
3606% todo
3607
3608\section{\module{distutils.command.bdist} --- Build a binary installer}
3609\declaremodule{standard}{distutils.command.bdist}
3610\modulesynopsis{Build a binary installer for a package}
3611
3612% todo
3613
3614\section{\module{distutils.command.bdist_packager} --- Abstract base class for packagers}
3615\declaremodule[distutils.command.bdistpackager]{standard}{distutils.command.bdist_packager}
3616\modulesynopsis{Abstract base class for packagers}
3617
3618% todo
3619
3620\section{\module{distutils.command.bdist_dumb} --- Build a ``dumb'' installer}
3621\declaremodule[distutils.command.bdistdumb]{standard}{distutils.command.bdist_dumb}
3622\modulesynopsis{Build a ``dumb'' installer - a simple archive of files}
3623
3624% todo
3625
Thomas Wouters89f507f2006-12-13 04:49:30 +00003626\section{\module{distutils.command.bdist_msi} --- Build a Microsoft Installer binary package}
3627\declaremodule[distutils.command.bdistmsi]{standard}{distutils.command.bdist_msi}
3628\modulesynopsis{Build a binary distribution as a Windows MSI file}
3629
3630% todo
Fred Drake6fca7cc2004-03-23 18:43:03 +00003631
3632\section{\module{distutils.command.bdist_rpm} --- Build a binary distribution as a Redhat RPM and SRPM}
3633\declaremodule[distutils.command.bdistrpm]{standard}{distutils.command.bdist_rpm}
3634\modulesynopsis{Build a binary distribution as a Redhat RPM and SRPM}
3635
3636% todo
3637
3638\section{\module{distutils.command.bdist_wininst} --- Build a Windows installer}
3639\declaremodule[distutils.command.bdistwininst]{standard}{distutils.command.bdist_wininst}
3640\modulesynopsis{Build a Windows installer}
3641
3642% todo
3643
3644\section{\module{distutils.command.sdist} --- Build a source distribution}
3645\declaremodule{standard}{distutils.command.sdist}
3646\modulesynopsis{Build a source distribution}
3647
3648% todo
3649
3650\section{\module{distutils.command.build} --- Build all files of a package}
3651\declaremodule{standard}{distutils.command.build}
3652\modulesynopsis{Build all files of a package}
3653
3654% todo
3655
3656\section{\module{distutils.command.build_clib} --- Build any C libraries in a package}
3657\declaremodule[distutils.command.buildclib]{standard}{distutils.command.build_clib}
3658\modulesynopsis{Build any C libraries in a package}
3659
3660% todo
3661
3662\section{\module{distutils.command.build_ext} --- Build any extensions in a package}
3663\declaremodule[distutils.command.buildext]{standard}{distutils.command.build_ext}
3664\modulesynopsis{Build any extensions in a package}
3665
3666% todo
3667
3668\section{\module{distutils.command.build_py} --- Build the .py/.pyc files of a package}
3669\declaremodule[distutils.command.buildpy]{standard}{distutils.command.build_py}
3670\modulesynopsis{Build the .py/.pyc files of a package}
3671
3672% todo
3673
3674\section{\module{distutils.command.build_scripts} --- Build the scripts of a package}
3675\declaremodule[distutils.command.buildscripts]{standard}{distutils.command.build_scripts}
3676\modulesynopsis{Build the scripts of a package}
3677
3678% todo
3679
3680\section{\module{distutils.command.clean} --- Clean a package build area}
3681\declaremodule{standard}{distutils.command.clean}
3682\modulesynopsis{Clean a package build area}
3683
3684% todo
3685
3686\section{\module{distutils.command.config} --- Perform package configuration}
3687\declaremodule{standard}{distutils.command.config}
3688\modulesynopsis{Perform package configuration}
3689
3690% todo
3691
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003692\section{\module{distutils.command.install} --- Install a package}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003693\declaremodule{standard}{distutils.command.install}
3694\modulesynopsis{Install a package}
3695
3696% todo
3697
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003698\section{\module{distutils.command.install_data}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003699 --- Install data files from a package}
3700\declaremodule[distutils.command.installdata]{standard}{distutils.command.install_data}
3701\modulesynopsis{Install data files from a package}
3702
3703% todo
3704
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003705\section{\module{distutils.command.install_headers}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003706 --- Install C/\Cpp{} header files from a package}
3707\declaremodule[distutils.command.installheaders]{standard}{distutils.command.install_headers}
3708\modulesynopsis{Install C/\Cpp{} header files from a package}
3709
3710% todo
3711
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003712\section{\module{distutils.command.install_lib}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003713 --- Install library files from a package}
3714\declaremodule[distutils.command.installlib]{standard}{distutils.command.install_lib}
3715\modulesynopsis{Install library files from a package}
3716
3717% todo
3718
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003719\section{\module{distutils.command.install_scripts}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003720 --- Install script files from a package}
3721\declaremodule[distutils.command.installscripts]{standard}{distutils.command.install_scripts}
3722\modulesynopsis{Install script files from a package}
3723
3724% todo
3725
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003726\section{\module{distutils.command.register}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003727 --- Register a module with the Python Package Index}
3728\declaremodule{standard}{distutils.command.register}
3729\modulesynopsis{Register a module with the Python Package Index}
3730
3731The \code{register} command registers the package with the Python Package
3732Index. This is described in more detail in \pep{301}.
3733% todo
3734
Neal Norwitz2e56c8a2004-08-13 02:56:16 +00003735\section{Creating a new Distutils command}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003736
3737This section outlines the steps to create a new Distutils command.
3738
3739A new command lives in a module in the \module{distutils.command}
3740package. There is a sample template in that directory called
3741\file{command_template}. Copy this file to a new module with the
3742same name as the new command you're implementing. This module should
3743implement a class with the same name as the module (and the command).
3744So, for instance, to create the command \code{peel_banana} (so that users
3745can run \samp{setup.py peel_banana}), you'd copy \file{command_template}
3746to \file{distutils/command/peel_banana.py}, then edit it so that it's
3747implementing the class \class{peel_banana}, a subclass of
3748\class{distutils.cmd.Command}.
3749
3750Subclasses of \class{Command} must define the following methods.
3751
Guido van Rossumd8faa362007-04-27 19:54:29 +00003752\begin{methoddesc}[Command]{initialize_options()}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003753Set default values for all the options that this command
3754supports. Note that these defaults may be overridden by other
3755commands, by the setup script, by config files, or by the
3756command-line. Thus, this is not the place to code dependencies
3757between options; generally, \method{initialize_options()} implementations
3758are just a bunch of \samp{self.foo = None} assignments.
3759\end{methoddesc}
3760
Guido van Rossumd8faa362007-04-27 19:54:29 +00003761\begin{methoddesc}[Command]{finalize_options}{}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003762Set final values for all the options that this command supports.
3763This is always called as late as possible, ie. after any option
3764assignments from the command-line or from other commands have been
3765done. Thus, this is the place to to code option dependencies: if
3766\var{foo} depends on \var{bar}, then it is safe to set \var{foo} from
3767\var{bar} as long as \var{foo} still has the same value it was assigned in
3768\method{initialize_options()}.
3769\end{methoddesc}
Guido van Rossumd8faa362007-04-27 19:54:29 +00003770\begin{methoddesc}[Command]{run}{}
Fred Drake6fca7cc2004-03-23 18:43:03 +00003771A command's raison d'etre: carry out the action it exists to
3772perform, controlled by the options initialized in
3773\method{initialize_options()}, customized by other commands, the setup
3774script, the command-line, and config files, and finalized in
3775\method{finalize_options()}. All terminal output and filesystem
3776interaction should be done by \method{run()}.
3777\end{methoddesc}
3778
3779\var{sub_commands} formalizes the notion of a ``family'' of commands,
3780eg. \code{install} as the parent with sub-commands \code{install_lib},
3781\code{install_headers}, etc. The parent of a family of commands
3782defines \var{sub_commands} as a class attribute; it's a list of
37832-tuples \samp{(command_name, predicate)}, with \var{command_name} a string
3784and \var{predicate} an unbound method, a string or None.
3785\var{predicate} is a method of the parent command that
3786determines whether the corresponding command is applicable in the
3787current situation. (Eg. we \code{install_headers} is only applicable if
3788we have any C header files to install.) If \var{predicate} is None,
3789that command is always applicable.
3790
3791\var{sub_commands} is usually defined at the *end* of a class, because
3792predicates can be unbound methods, so they must already have been
3793defined. The canonical example is the \command{install} command.
3794
Fred Drake6356fff2004-03-23 19:02:38 +00003795%
3796% The ugly "%begin{latexonly}" pseudo-environments are really just to
3797% keep LaTeX2HTML quiet during the \renewcommand{} macros; they're
3798% not really valuable.
3799%
3800
3801%begin{latexonly}
3802\renewcommand{\indexname}{Module Index}
3803%end{latexonly}
Fred Drakead622022004-03-25 16:35:10 +00003804\input{moddist.ind} % Module Index
Fred Drake6356fff2004-03-23 19:02:38 +00003805
3806%begin{latexonly}
3807\renewcommand{\indexname}{Index}
3808%end{latexonly}
Fred Drakead622022004-03-25 16:35:10 +00003809\input{dist.ind} % Index
Fred Drake6fca7cc2004-03-23 18:43:03 +00003810
Greg Wardabc52162000-02-26 00:52:48 +00003811\end{document}