blob: 88c15511a1c448c6281649a34349547dee5cbcdc [file] [log] [blame]
Greg Ward7c1e5f62000-03-10 01:56:58 +00001\documentclass{howto}
Greg Ward7593eb32000-04-09 03:59:15 +00002\usepackage{distutils}
Greg Ward7c1e5f62000-03-10 01:56:58 +00003
4\title{Installing Python Modules}
5
6% The audience for this document includes people who don't know anything
7% about Python and aren't about to learn the language just in order to
8% install and maintain it for their users, i.e. system administrators.
9% Thus, I have to be sure to explain the basics at some point:
10% sys.path and PYTHONPATH at least. Should probably give pointers to
11% other docs on "import site", PYTHONSTARTUP, PYTHONHOME, etc.
12%
13% Also, I need to take into account that most modules out there don't
14% (yet) use Distutils: briefly explain the old Makefile.pre.in
15% convention (maybe move material from the E&E manual to here?), and
16% explain where to copy .py and .so files manually if the distribution
17% doesn't provide a mechanism for doing so.
18%
19% Finally, it might be useful to include all the material from my "Care
20% and Feeding of a Python Installation" talk in here somewhere. Yow!
21
Greg Ward7c1e5f62000-03-10 01:56:58 +000022\author{Greg Ward}
23\authoraddress{E-mail: \email{gward@python.net}}
24
Greg Warde3cca262000-08-31 16:36:31 +000025\makeindex
Greg Ward7c1e5f62000-03-10 01:56:58 +000026
27\begin{document}
28
29\maketitle
30
Greg Warde3cca262000-08-31 16:36:31 +000031\begin{abstract}
32 \noindent
33 This document describes the Python Distribution Utilities
34 (``Distutils'') from the end-user's point-of-view, describing how to
35 extend the capabilities of a standard Python installation by building
36 and installing third-party Python modules and extensions.
37\end{abstract}
38
Greg Ward7c1e5f62000-03-10 01:56:58 +000039%\begin{abstract}
40%\noindent
41%Abstract this!
42%\end{abstract}
43
44\tableofcontents
45
46\section{Introduction}
Greg Warde78298a2000-04-28 17:12:24 +000047\label{intro}
Greg Ward7c1e5f62000-03-10 01:56:58 +000048
Greg Ward6002ffc2000-04-09 20:54:50 +000049Although Python's extensive standard library covers many programming
50needs, there often comes a time when you need to add some new
51functionality to your Python installation in the form of third-party
52modules. This might be necessary to support your own programming, or to
53support an application that you want to use and that happens to be
54written in Python.
55
56In the past, there has been little support for adding third-party
57modules to an existing Python installation. With the introduction of
Fred Drake01df4532000-06-30 03:36:41 +000058the Python Distribution Utilities (Distutils for short) in Python 2.0,
Greg Ward6002ffc2000-04-09 20:54:50 +000059this is starting to change. Not everything will change overnight,
60though, so while this document concentrates on installing module
61distributions that use the Distutils, we will also spend some time
62dealing with the old ways.
63
64This document is aimed primarily at the people who need to install
65third-party Python modules: end-users and system administrators who just
66need to get some Python application running, and existing Python
67programmers who want to add some new goodies to their toolbox. You
68don't need to know Python to read this document; there will be some
69brief forays into using Python's interactive mode to explore your
70installation, but that's it. If you're looking for information on how
71to distribute your own Python modules so that others may use them, see
Fred Drake01df4532000-06-30 03:36:41 +000072the \citetitle[../dist/dist.html]{Distributing Python Modules} manual.
Greg Ward7c1e5f62000-03-10 01:56:58 +000073
74
Greg Ward6002ffc2000-04-09 20:54:50 +000075\subsection{Best case: trivial installation}
Greg Ward1ed49ee2000-09-13 00:00:58 +000076\label{trivial-install}
Greg Ward6002ffc2000-04-09 20:54:50 +000077
78In the best case, someone will have prepared a special version of the
79module distribution you want to install that is targeted specifically at
80your platform and is installed just like any other software on your
81platform. For example, the module developer might make an executable
82installer available for Windows users, an RPM package for users of
83RPM-based Linux systems (Red Hat, SuSE, Mandrake, and many others), a
84Debian package for users of Debian-based Linux systems (Debian proper,
85Caldera, Corel, etc.), and so forth.
86
87In that case, you would download the installer appropriate to your
Greg Wardc392caa2000-04-11 02:00:26 +000088platform and do the obvious thing with it: run it if it's an executable
89installer, \code{rpm --install} it if it's an RPM, etc. You don't need
90to run Python or a setup script, you don't need to compile
91anything---you might not even need to read any instructions (although
92it's always a good idea to do so anyways).
Greg Ward6002ffc2000-04-09 20:54:50 +000093
94Of course, things will not always be that easy. You might be interested
Greg Wardc392caa2000-04-11 02:00:26 +000095in a module distribution that doesn't have an easy-to-use installer for
96your platform. In that case, you'll have to start with the source
97distribution released by the module's author/maintainer. Installing
98from a source distribution is not too hard, as long as the modules are
99packaged in the standard way. The bulk of this document is about
100building and installing modules from standard source distributions.
Greg Ward7c1e5f62000-03-10 01:56:58 +0000101
102
Greg Ward6002ffc2000-04-09 20:54:50 +0000103\subsection{The new standard: Distutils}
Greg Warde78298a2000-04-28 17:12:24 +0000104\label{new-standard}
Greg Ward6002ffc2000-04-09 20:54:50 +0000105
106If you download a module source distribution, you can tell pretty
Greg Ward19c67f82000-06-24 01:33:16 +0000107quickly if it was packaged and distributed in the standard way, i.e.
108using the Distutils. First, the distribution's name and version number
109will be featured prominently in the name of the downloaded archive, e.g.
Greg Ward6002ffc2000-04-09 20:54:50 +0000110\file{foo-1.0.tar.gz} or \file{widget-0.9.7.zip}. Next, the archive
111will unpack into a similarly-named directory: \file{foo-1.0} or
112\file{widget-0.9.7}. Additionally, the distribution will contain a
113setup script \file{setup.py}, and a \file{README.txt} (or possibly
114\file{README}), which should explain that building and installing the
115module distribution is a simple matter of running
116\begin{verbatim}
117python setup.py install
118\end{verbatim}
119
120If all these things are true, then you already know how to build and
121install the modules you've just downloaded: run the command above.
122Unless you need to install things in a non-standard way or customize the
123build process, you don't really need this manual. Or rather, the above
124command is everything you need to get out of this manual.
Greg Ward7c1e5f62000-03-10 01:56:58 +0000125
126
Greg Ward6002ffc2000-04-09 20:54:50 +0000127\subsection{The old way: no standards}
Greg Warde78298a2000-04-28 17:12:24 +0000128\label{old-way}
Greg Ward7c1e5f62000-03-10 01:56:58 +0000129
Greg Ward6002ffc2000-04-09 20:54:50 +0000130Before the Distutils, there was no infrastructure to support installing
131third-party modules in a consistent, standardized way. Thus, it's not
132really possible to write a general manual for installing Python modules
133that don't use the Distutils; the only truly general statement that can
Greg Wardc392caa2000-04-11 02:00:26 +0000134be made is, ``Read the module's own installation instructions.''
Greg Ward6002ffc2000-04-09 20:54:50 +0000135
Greg Ward19c67f82000-06-24 01:33:16 +0000136However, if such instructions exist at all, they are often woefully
Greg Wardc392caa2000-04-11 02:00:26 +0000137inadequate and targeted at experienced Python developers. Such users
138are already familiar with how the Python library is laid out on their
139platform, and know where to copy various files in order for Python to
140find them. This document makes no such assumptions, and explains how
Fred Drakeeff9a872000-10-26 16:41:03 +0000141the Python library is laid out on three major platforms (\UNIX, Windows,
142and MacOS), so that you can understand what happens when the Distutils
Greg Wardc392caa2000-04-11 02:00:26 +0000143do their job \emph{and} know how to install modules manually when the
144module author fails to provide a setup script.
Greg Ward6002ffc2000-04-09 20:54:50 +0000145
146Additionally, while there has not previously been a standard
147installation mechanism, Python has had some standard machinery for
Andrew M. Kuchling30537da2001-02-17 00:42:56 +0000148building extensions on \UNIX{} since Python 1.4. This
Fred Drakeeff9a872000-10-26 16:41:03 +0000149machinery (the \file{Makefile.pre.in} file) is superseded by the
150Distutils, but it will no doubt live on in older module distributions
151for a while. This \file{Makefile.pre.in} mechanism is documented in
152the \citetitle[../ext/ext.html]{Extending \& Embedding Python} manual,
153but that manual is aimed at module developers---hence, we include
154documentation for builders/installers here.
Greg Ward6002ffc2000-04-09 20:54:50 +0000155
156All of the pre-Distutils material is tucked away in
Greg Warde78298a2000-04-28 17:12:24 +0000157section~\ref{pre-distutils}.
Greg Ward7c1e5f62000-03-10 01:56:58 +0000158
159
Greg Ward29576562000-03-18 15:11:50 +0000160\section{Standard Build and Install}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000161\label{standard-install}
Greg Ward7c1e5f62000-03-10 01:56:58 +0000162
Greg Warde78298a2000-04-28 17:12:24 +0000163As described in section~\ref{new-standard}, building and installing
Greg Ward6002ffc2000-04-09 20:54:50 +0000164a module distribution using the Distutils is usually one simple command:
165\begin{verbatim}
166python setup.py install
167\end{verbatim}
Fred Drakeeff9a872000-10-26 16:41:03 +0000168On \UNIX, you'd run this command from a shell prompt; on Windows, you
Greg Warde24f05e2000-09-12 23:55:19 +0000169have to open a command prompt window (``DOS box'') and do it there; on
Fred Drakeeff9a872000-10-26 16:41:03 +0000170MacOS, things are a tad more complicated (see below).
Greg Ward6002ffc2000-04-09 20:54:50 +0000171
172
173\subsection{Platform variations}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000174\label{platform-variations}
Greg Ward6002ffc2000-04-09 20:54:50 +0000175
176You should always run the setup command from the distribution root
177directory, i.e. the top-level subdirectory that the module source
178distribution unpacks into. For example, if you've just downloaded a
Fred Drakeeff9a872000-10-26 16:41:03 +0000179module source distribution \file{foo-1.0.tar.gz} onto a
180\UNIX{} system, the normal thing to do is:
Greg Ward6002ffc2000-04-09 20:54:50 +0000181\begin{verbatim}
182gunzip -c foo-1.0.tar.gz | tar xf - # unpacks into directory foo-1.0
183cd foo-1.0
184python setup.py install
185\end{verbatim}
186
Greg Warde24f05e2000-09-12 23:55:19 +0000187On Windows, you'd probably download \file{foo-1.0.zip}. If you
188downloaded the archive file to \file{C:\textbackslash{}Temp}, then it
189would unpack into \file{C:\textbackslash{}Temp\textbackslash{}foo-1.0};
190you can use either a GUI archive manipulator (such as WinZip) or a
191command-line tool (such as \program{unzip} or \program{pkunzip}) to
192unpack the archive. Then, open a command prompt window (``DOS box''),
193and run:
Greg Ward6002ffc2000-04-09 20:54:50 +0000194\begin{verbatim}
Greg Warde24f05e2000-09-12 23:55:19 +0000195cd c:\Temp\foo-1.0
Greg Ward6002ffc2000-04-09 20:54:50 +0000196python setup.py install
197\end{verbatim}
198
Fred Drakeeff9a872000-10-26 16:41:03 +0000199On MacOS, you have to go through a bit more effort to supply
Greg Warde24f05e2000-09-12 23:55:19 +0000200command-line arguments to the setup script:
201\begin{itemize}
202\item hit option-double-click on the script's icon (or option-drop it
203 onto the Python interpreter's icon)
204\item press the ``Set unix-style command line'' button
205\item set the ``Keep stdio window open on termination'' if you're
206 interested in seeing the output of the setup script (which is usually
207 voluminous and often useful)
Greg Ward15f5e2a2000-09-26 02:54:43 +0000208\item when the command-line dialog pops up, enter ``install'' (you
Greg Warde24f05e2000-09-12 23:55:19 +0000209 can, of course, enter any Distutils command-line as described in this
Fred Drakeeff9a872000-10-26 16:41:03 +0000210 document or in \citetitle[../dist/dist.html]{Distributing Python
211 Modules}: just leave off the initial \code{python setup.py} and
212 you'll be fine)
Greg Warde24f05e2000-09-12 23:55:19 +0000213\end{itemize}
214\XXX{this should change: every Distutils setup script will need
215 command-line arguments for every run (and should probably keep stdout
216 around), so all this should happen automatically for setup scripts}
Greg Wardc392caa2000-04-11 02:00:26 +0000217
Greg Ward6002ffc2000-04-09 20:54:50 +0000218
219\subsection{Splitting the job up}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000220\label{splitting-up}
Greg Ward6002ffc2000-04-09 20:54:50 +0000221
222Running \code{setup.py install} builds and installs all modules in one
Greg Ward14deaae2000-09-11 00:33:15 +0000223run. If you prefer to work incrementally---especially useful if you
224want to customize the build process, or if things are going wrong---you
225can use the setup script to do one thing at a time. This is
Greg Ward3e7b1332000-05-30 03:00:43 +0000226particularly helpful when the build and install will be done by
227different users---e.g., you might want to build a module distribution
228and hand it off to a system administrator for installation (or do it
229yourself, with super-user privileges).
Greg Ward6002ffc2000-04-09 20:54:50 +0000230
231For example, you can build everything in one step, and then install
232everything in a second step, by invoking the setup script twice:
233\begin{verbatim}
234python setup.py build
235python setup.py install
236\end{verbatim}
237(If you do this, you will notice that running the \command{install}
Greg Ward14deaae2000-09-11 00:33:15 +0000238command first runs the \command{build} command, which---in this
239case---quickly notices that it has nothing to do, since everything in
240the \file{build} directory is up-to-date.)
Greg Ward29576562000-03-18 15:11:50 +0000241
Greg Ward14deaae2000-09-11 00:33:15 +0000242You may not need this ability to break things down often if all you do
243is install modules downloaded off the 'net, but it's very handy for more
244advanced tasks. If you get into distributing your own Python modules
245and extensions, you'll run lots of individual Distutils commands on
246their own.
Greg Ward7c1e5f62000-03-10 01:56:58 +0000247
248
Greg Wardc392caa2000-04-11 02:00:26 +0000249\subsection{How building works}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000250\label{how-build-works}
Greg Ward7c1e5f62000-03-10 01:56:58 +0000251
Greg Wardc392caa2000-04-11 02:00:26 +0000252As implied above, the \command{build} command is responsible for putting
253the files to install into a \emph{build directory}. By default, this is
254\file{build} under the distribution root; if you're excessively
255concerned with speed, or want to keep the source tree pristine, you can
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000256change the build directory with the \longprogramopt{build-base} option.
257For example:
Greg Wardc392caa2000-04-11 02:00:26 +0000258\begin{verbatim}
259python setup.py build --build-base=/tmp/pybuild/foo-1.0
260\end{verbatim}
261(Or you could do this permanently with a directive in your system or
262personal Distutils configuration file; see
Greg Warde78298a2000-04-28 17:12:24 +0000263section~\ref{config-files}.) Normally, this isn't necessary.
Greg Wardc392caa2000-04-11 02:00:26 +0000264
265The default layout for the build tree is as follows:
266\begin{verbatim}
267--- build/ --- lib/
268or
269--- build/ --- lib.<plat>/
270 temp.<plat>/
271\end{verbatim}
272where \code{<plat>} expands to a brief description of the current
Greg Ward7ef2ba72000-10-22 01:40:08 +0000273OS/hardware platform and Python version. The first form, with just a
274\file{lib} directory, is used for ``pure module distributions''---that
275is, module distributions that include only pure Python modules. If a
276module distribution contains any extensions (modules written in C/C++),
277then the second form, with two \code{<plat>} directories, is used. In
278that case, the \file{temp.\filevar{plat}} directory holds temporary
279files generated by the compile/link process that don't actually get
280installed. In either case, the \file{lib} (or
Greg Wardc392caa2000-04-11 02:00:26 +0000281\file{lib.\filevar{plat}}) directory contains all Python modules (pure
282Python and extensions) that will be installed.
283
284In the future, more directories will be added to handle Python scripts,
285documentation, binary executables, and whatever else is needed to handle
Greg Wardd5faa7e2000-04-12 01:42:19 +0000286the job of installing Python modules and applications.
Greg Wardc392caa2000-04-11 02:00:26 +0000287
288
289\subsection{How installation works}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000290\label{how-install-works}
Greg Wardc392caa2000-04-11 02:00:26 +0000291
292After the \command{build} command runs (whether you run it explicitly,
293or the \command{install} command does it for you), the work of the
294\command{install} command is relatively simple: all it has to do is copy
295everything under \file{build/lib} (or \file{build/lib.\filevar{plat}})
296to your chosen installation directory.
297
298If you don't choose an installation directory---i.e., if you just run
299\code{setup.py install}---then the \command{install} command installs to
300the standard location for third-party Python modules. This location
301varies by platform and by how you built/installed Python itself. On
Fred Drakeeff9a872000-10-26 16:41:03 +0000302\UNIX{} and MacOS, it also depends on whether the module distribution
Greg Wardc392caa2000-04-11 02:00:26 +0000303being installed is pure Python or contains extensions (``non-pure''):
Greg Wardd5faa7e2000-04-12 01:42:19 +0000304\begin{tableiv}{l|l|l|c}{textrm}%
305 {Platform}{Standard installation location}{Default value}{Notes}
Fred Drakeeff9a872000-10-26 16:41:03 +0000306 \lineiv{\UNIX{} (pure)}
Fred Drake01df4532000-06-30 03:36:41 +0000307 {\filenq{\filevar{prefix}/lib/python2.0/site-packages}}
308 {\filenq{/usr/local/lib/python2.0/site-packages}}
Greg Ward502d2b42000-04-12 14:20:15 +0000309 {(1)}
Fred Drakeeff9a872000-10-26 16:41:03 +0000310 \lineiv{\UNIX{} (non-pure)}
Fred Drake01df4532000-06-30 03:36:41 +0000311 {\filenq{\filevar{exec-prefix}/lib/python2.0/site-packages}}
312 {\filenq{/usr/local/lib/python2.0/site-packages}}
Greg Ward502d2b42000-04-12 14:20:15 +0000313 {(1)}
Greg Wardd5faa7e2000-04-12 01:42:19 +0000314 \lineiv{Windows}
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000315 {\filenq{\filevar{prefix}}}
Greg Ward4756e5f2000-04-19 22:40:12 +0000316 {\filenq{C:\textbackslash{}Python}}
Greg Ward502d2b42000-04-12 14:20:15 +0000317 {(2)}
Fred Drakeeff9a872000-10-26 16:41:03 +0000318 \lineiv{MacOS (pure)}
Greg Ward7ef2ba72000-10-22 01:40:08 +0000319 {\filenq{\filevar{prefix}:Lib:site-packages}}
320 {\filenq{Python:Lib:site-packages}}
Greg Wardd5faa7e2000-04-12 01:42:19 +0000321 {}
Fred Drakeeff9a872000-10-26 16:41:03 +0000322 \lineiv{MacOS (non-pure)}
Greg Ward7ef2ba72000-10-22 01:40:08 +0000323 {\filenq{\filevar{prefix}:Lib:site-packages}}
324 {\filenq{Python:Lib:site-packages}}
Greg Wardd5faa7e2000-04-12 01:42:19 +0000325 {}
326\end{tableiv}
327
328\noindent Notes:
329\begin{description}
Greg Ward502d2b42000-04-12 14:20:15 +0000330\item[(1)] Most Linux distributions include Python as a standard part of
331 the system, so \filevar{prefix} and \filevar{exec-prefix} are usually
332 both \file{/usr} on Linux. If you build Python yourself on Linux (or
Fred Drakeeff9a872000-10-26 16:41:03 +0000333 any \UNIX-like system), the default \filevar{prefix} and
Greg Ward502d2b42000-04-12 14:20:15 +0000334 \filevar{exec-prefix} are \file{/usr/local}.
335\item[(2)] The default installation directory on Windows was
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000336 \file{C:\textbackslash{}Program Files\textbackslash{}Python} under
337 Python 1.6a1, 1.5.2, and earlier.
Greg Wardd5faa7e2000-04-12 01:42:19 +0000338\end{description}
339
Greg Wardc392caa2000-04-11 02:00:26 +0000340\filevar{prefix} and \filevar{exec-prefix} stand for the directories
341that Python is installed to, and where it finds its libraries at
Fred Drakeeff9a872000-10-26 16:41:03 +0000342run-time. They are always the same under Windows and MacOS, and very
343often the same under \UNIX. You can find out what your Python
Greg Wardc392caa2000-04-11 02:00:26 +0000344installation uses for \filevar{prefix} and \filevar{exec-prefix} by
345running Python in interactive mode and typing a few simple commands.
Fred Drakeeff9a872000-10-26 16:41:03 +0000346Under \UNIX, just type \code{python} at the shell prompt; under Windows,
347run ``Python 2.0 (interpreter)'' \XXX{right?}; under MacOS, \XXX{???}.
Fred Drake01df4532000-06-30 03:36:41 +0000348Once the interpreter is started, you type Python code at the
349\samp{>>> } prompt. For example, on my Linux system, I type the three
350Python statements shown below, and get the output as shown, to find
351out my \filevar{prefix} and \filevar{exec-prefix}:
352
Greg Wardc392caa2000-04-11 02:00:26 +0000353\begin{verbatim}
354Python 1.5.2 (#1, Apr 18 1999, 16:03:16) [GCC pgcc-2.91.60 19981201 (egcs-1.1.1 on linux2
355Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
356>>> import sys
357>>> sys.prefix
358'/usr'
359>>> sys.exec_prefix
360'/usr'
361\end{verbatim}
362
Greg Ward7ef2ba72000-10-22 01:40:08 +0000363If you don't want to install modules to the standard location, or if you
364don't have permission to write there, then you need to read about
365alternate installations in section~\ref{alt-install}. If you want to
366customize your installation directories more heavily, see
367section~\ref{custom-install} on custom installations.
Greg Wardc392caa2000-04-11 02:00:26 +0000368
369
370% This rather nasty macro is used to generate the tables that describe
371% each installation scheme. It's nasty because it takes two arguments
372% for each "slot" in an installation scheme, there will soon be more
373% than five of these slots, and TeX has a limit of 10 arguments to a
374% macro. Uh-oh.
375
Greg Ward29576562000-03-18 15:11:50 +0000376\newcommand{\installscheme}[8]
377 {\begin{tableiii}{lll}{textrm}
378 {Type of file}
379 {Installation Directory}
380 {Override option}
381 \lineiii{pure module distribution}
382 {\filevar{#1}\filenq{#2}}
Greg Warda021aca2000-04-19 22:34:11 +0000383 {\longprogramopt{install-purelib}}
Greg Ward29576562000-03-18 15:11:50 +0000384 \lineiii{non-pure module distribution}
385 {\filevar{#3}\filenq{#4}}
Greg Warda021aca2000-04-19 22:34:11 +0000386 {\longprogramopt{install-platlib}}
Greg Ward29576562000-03-18 15:11:50 +0000387 \lineiii{scripts}
388 {\filevar{#5}\filenq{#6}}
Greg Warda021aca2000-04-19 22:34:11 +0000389 {\longprogramopt{install-scripts}}
Greg Ward29576562000-03-18 15:11:50 +0000390 \lineiii{data}
391 {\filevar{#7}\filenq{#8}}
Greg Warda021aca2000-04-19 22:34:11 +0000392 {\longprogramopt{install-data}}
Greg Ward29576562000-03-18 15:11:50 +0000393 \end{tableiii}}
Greg Ward7c1e5f62000-03-10 01:56:58 +0000394
Greg Ward0bc59532000-09-30 21:06:40 +0000395
396\section{Building Extensions: Tips and Tricks}
397\label{building-ext}
398
399(This is the section to read for people doing any sort of interesting
400build. Things to talk about:
401\begin{itemize}
Fred Drakeeff9a872000-10-26 16:41:03 +0000402\item the \file{Setup} file (any platform now, but \UNIX-biased)
Greg Ward0bc59532000-09-30 21:06:40 +0000403\item CFLAGS and LDFLAGS (must implement them first!)
404\item using non-MS compilers on Windows (how to convert
405 Python's library, ...)
406\end{itemize}
407
408
409\subsection{Tweaking compiler/linker flags}
410\label{tweak-flags}
411
412
413\subsection{Using non-Microsoft compilers on Windows}
414\label{non-ms-compilers}
415
416\XXX{One place to look: \url{http://www.cyberus.ca/~g_will/pyExtenDL.shtml}}
417
418
419
Greg Ward29576562000-03-18 15:11:50 +0000420\section{Alternate Installation}
Greg Warde78298a2000-04-28 17:12:24 +0000421\label{alt-install}
Greg Ward7c1e5f62000-03-10 01:56:58 +0000422
Greg Ward29576562000-03-18 15:11:50 +0000423Often, it is necessary or desirable to install modules to a location
424other than the standard location for third-party Python modules. For
Fred Drakeeff9a872000-10-26 16:41:03 +0000425example, on a \UNIX{} system you might not have permission to write to the
Greg Ward29576562000-03-18 15:11:50 +0000426standard third-party module directory. Or you might wish to try out a
427module before making it a standard part of your local Python
428installation; this is especially true when upgrading a distribution
429already present: you want to make sure your existing base of scripts
430still works with the new version before actually upgrading.
431
432The Distutils \command{install} command is designed to make installing
433module distributions to an alternate location simple and painless. The
434basic idea is that you supply a base directory for the installation, and
435the \command{install} command picks a set of directories (called an
436\emph{installation scheme}) under this base directory in which to
437install files. The details differ across platforms, so read whichever
Andrew M. Kuchling30537da2001-02-17 00:42:56 +0000438of the following sections applies to you.
Greg Ward29576562000-03-18 15:11:50 +0000439
440
Fred Drakeeff9a872000-10-26 16:41:03 +0000441\subsection{Alternate installation: \UNIX{} (the home scheme)}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000442\label{alt-install-prefix}
Greg Ward29576562000-03-18 15:11:50 +0000443
Fred Drakeeff9a872000-10-26 16:41:03 +0000444Under \UNIX, there are two ways to perform an alternate installation.
Greg Ward29576562000-03-18 15:11:50 +0000445The ``prefix scheme'' is similar to how alternate installation works
Fred Drakeeff9a872000-10-26 16:41:03 +0000446under Windows and MacOS, but is not necessarily the most useful way to
Greg Ward29576562000-03-18 15:11:50 +0000447maintain a personal Python library. Hence, we document the more
448convenient and commonly useful ``home scheme'' first.
449
Greg Wardc392caa2000-04-11 02:00:26 +0000450The idea behind the ``home scheme'' is that you build and maintain a
451personal stash of Python modules, probably under your home directory.
452Installing a new module distribution is as simple as
Greg Ward29576562000-03-18 15:11:50 +0000453\begin{verbatim}
454python setup.py install --home=<dir>
455\end{verbatim}
Greg Warda021aca2000-04-19 22:34:11 +0000456where you can supply any directory you like for the \longprogramopt{home}
Greg Ward4756e5f2000-04-19 22:40:12 +0000457option. Lazy typists can just type a tilde (\code{\textasciitilde}); the
Greg Wardc392caa2000-04-11 02:00:26 +0000458\command{install} command will expand this to your home directory:
459\begin{verbatim}
460python setup.py install --home=~
461\end{verbatim}
Greg Ward29576562000-03-18 15:11:50 +0000462
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000463The \longprogramopt{home} option defines the installation base
464directory. Files are installed to the following directories under the
465installation base as follows:
Greg Ward29576562000-03-18 15:11:50 +0000466\installscheme{home}{/lib/python}
467 {home}{/lib/python}
468 {home}{/bin}
469 {home}{/share}
470
Fred Drakeeff9a872000-10-26 16:41:03 +0000471\subsection{Alternate installation: \UNIX{} (the prefix scheme)}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000472\label{alt-install-home}
Greg Ward29576562000-03-18 15:11:50 +0000473
474The ``prefix scheme'' is useful when you wish to use one Python
475installation to perform the build/install (i.e., to run the setup
476script), but install modules into the third-party module directory of a
477different Python installation (or something that looks like a different
478Python installation). If this sounds a trifle unusual, it is---that's
479why the ``home scheme'' comes first. However, there are at least two
480known cases where the prefix scheme will be useful.
481
Greg Ward19c67f82000-06-24 01:33:16 +0000482First, consider that many Linux distributions put Python in \file{/usr},
Greg Ward29576562000-03-18 15:11:50 +0000483rather than the more traditional \file{/usr/local}. This is entirely
484appropriate, since in those cases Python is part of ``the system''
485rather than a local add-on. However, if you are installing Python
486modules from source, you probably want them to go in
487\file{/usr/local/lib/python1.\filevar{X}} rather than
488\file{/usr/lib/python1.\filevar{X}}. This can be done with
489\begin{verbatim}
490/usr/bin/python setup.py install --prefix=/usr/local
491\end{verbatim}
492
493Another possibility is a network filesystem where the name used to write
494to a remote directory is different from the name used to read it: for
495example, the Python interpreter accessed as \file{/usr/local/bin/python}
496might search for modules in \file{/usr/local/lib/python1.\filevar{X}},
497but those modules would have to be installed to, say,
498\file{/mnt/\filevar{@server}/export/lib/python1.\filevar{X}}. This
499could be done with
500\begin{verbatim}
501/usr/local/bin/python setup.py install --prefix=/mnt/@server/export
502\end{verbatim}
503
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000504In either case, the \longprogramopt{prefix} option defines the
505installation base, and the \longprogramopt{exec-prefix} option defines
506the platform-specific installation base, which is used for
507platform-specific files. (Currently, this just means non-pure module
508distributions, but could be expanded to C libraries, binary executables,
509etc.) If \longprogramopt{exec-prefix} is not supplied, it defaults to
510\longprogramopt{prefix}. Files are installed as follows:
Greg Ward29576562000-03-18 15:11:50 +0000511
512\installscheme{prefix}{/lib/python1.\filevar{X}/site-packages}
513 {exec-prefix}{/lib/python1.\filevar{X}/site-packages}
514 {prefix}{/bin}
515 {prefix}{/share}
516
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000517There is no requirement that \longprogramopt{prefix} or
518\longprogramopt{exec-prefix} actually point to an alternate Python
519installation; if the directories listed above do not already exist, they
520are created at installation time.
Greg Ward29576562000-03-18 15:11:50 +0000521
522Incidentally, the real reason the prefix scheme is important is simply
Fred Drakeeff9a872000-10-26 16:41:03 +0000523that a standard \UNIX{} installation uses the prefix scheme, but with
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000524\longprogramopt{prefix} and \longprogramopt{exec-prefix} supplied by
525Python itself (as \code{sys.prefix} and \code{sys.exec\_prefix}). Thus,
526you might think you'll never use the prefix scheme, but every time you
527run \code{python setup.py install} without any other options, you're
528using it.
Greg Ward29576562000-03-18 15:11:50 +0000529
530Note that installing extensions to an alternate Python installation has
531no effect on how those extensions are built: in particular, the Python
532header files (\file{Python.h} and friends) installed with the Python
533interpreter used to run the setup script will be used in compiling
534extensions. It is your responsibility to ensure that the interpreter
535used to run extensions installed in this way is compatibile with the
Greg Wardc392caa2000-04-11 02:00:26 +0000536interpreter used to build them. The best way to do this is to ensure
537that the two interpreters are the same version of Python (possibly
538different builds, or possibly copies of the same build). (Of course, if
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000539your \longprogramopt{prefix} and \longprogramopt{exec-prefix} don't even
540point to an alternate Python installation, this is immaterial.)
Greg Ward29576562000-03-18 15:11:50 +0000541
542
543\subsection{Alternate installation: Windows}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000544\label{alt-install-windows}
Greg Ward29576562000-03-18 15:11:50 +0000545
546Since Windows has no conception of a user's home directory, and since
547the standard Python installation under Windows is simpler than that
Fred Drakeeff9a872000-10-26 16:41:03 +0000548under \UNIX, there's no point in having separate \longprogramopt{prefix}
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000549and \longprogramopt{home} options. Just use the \longprogramopt{prefix}
550option to specify a base directory, e.g.
Greg Ward29576562000-03-18 15:11:50 +0000551\begin{verbatim}
Greg Ward8e14f052000-03-22 01:00:23 +0000552python setup.py install --prefix="\Temp\Python"
Greg Ward29576562000-03-18 15:11:50 +0000553\end{verbatim}
Greg Ward4756e5f2000-04-19 22:40:12 +0000554to install modules to the \file{\textbackslash{}Temp} directory on the current
Greg Ward29576562000-03-18 15:11:50 +0000555drive.
556
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000557The installation base is defined by the \longprogramopt{prefix} option;
558the \longprogramopt{exec-prefix} option is not supported under Windows.
559Files are installed as follows:
Greg Ward29576562000-03-18 15:11:50 +0000560\installscheme{prefix}{}
561 {prefix}{}
Greg Ward4756e5f2000-04-19 22:40:12 +0000562 {prefix}{\textbackslash{}Scripts}
563 {prefix}{\textbackslash{}Data}
Greg Ward29576562000-03-18 15:11:50 +0000564
565
Fred Drakeeff9a872000-10-26 16:41:03 +0000566\subsection{Alternate installation: MacOS}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000567\label{alt-install-macos}
Greg Ward29576562000-03-18 15:11:50 +0000568
Fred Drakeeff9a872000-10-26 16:41:03 +0000569Like Windows, MacOS has no notion of home directories (or even of
Greg Ward29576562000-03-18 15:11:50 +0000570users), and a fairly simple standard Python installation. Thus, only a
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000571\longprogramopt{prefix} option is needed. It defines the installation
572base, and files are installed under it as follows:
Greg Ward29576562000-03-18 15:11:50 +0000573
Greg Ward8c562592000-09-13 00:12:37 +0000574\installscheme{prefix}{:Lib:site-packages}
575 {prefix}{:Lib:site-packages}
Greg Ward8e14f052000-03-22 01:00:23 +0000576 {prefix}{:Scripts}
577 {prefix}{:Data}
Greg Ward29576562000-03-18 15:11:50 +0000578
Greg Ward8c562592000-09-13 00:12:37 +0000579See section~\ref{platform-variations} for information on supplying
580command-line arguments to the setup script with MacPython.
Greg Ward29576562000-03-18 15:11:50 +0000581
582
583\section{Custom Installation}
Greg Warde78298a2000-04-28 17:12:24 +0000584\label{custom-install}
Greg Ward29576562000-03-18 15:11:50 +0000585
586Sometimes, the alternate installation schemes described in
Greg Warde78298a2000-04-28 17:12:24 +0000587section~\ref{alt-install} just don't do what you want. You might
Greg Ward29576562000-03-18 15:11:50 +0000588want to tweak just one or two directories while keeping everything under
589the same base directory, or you might want to completely redefine the
590installation scheme. In either case, you're creating a \emph{custom
591 installation scheme}.
592
593You probably noticed the column of ``override options'' in the tables
594describing the alternate installation schemes above. Those options are
595how you define a custom installation scheme. These override options can
596be relative, absolute, or explicitly defined in terms of one of the
597installation base directories. (There are two installation base
598directories, and they are normally the same---they only differ when you
Fred Drakeeff9a872000-10-26 16:41:03 +0000599use the \UNIX{} ``prefix scheme'' and supply different
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000600\longprogramopt{prefix} and \longprogramopt{exec-prefix} options.)
Greg Ward29576562000-03-18 15:11:50 +0000601
602For example, say you're installing a module distribution to your home
Fred Drakeeff9a872000-10-26 16:41:03 +0000603directory under \UNIX---but you want scripts to go in
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000604\file{\textasciitilde/scripts} rather than \file{\textasciitilde/bin}.
605As you might expect, you can override this directory with the
606\longprogramopt{install-scripts} option; in this case, it makes most
607sense to supply a relative path, which will be interpreted relative to
608the installation base directory (your home directory, in this case):
Greg Ward29576562000-03-18 15:11:50 +0000609\begin{verbatim}
Greg Ward19c67f82000-06-24 01:33:16 +0000610python setup.py install --home=~ --install-scripts=scripts
Greg Ward29576562000-03-18 15:11:50 +0000611\end{verbatim}
612
Fred Drakeeff9a872000-10-26 16:41:03 +0000613Another \UNIX{} example: suppose your Python installation was built and
Greg Ward29576562000-03-18 15:11:50 +0000614installed with a prefix of \file{/usr/local/python}, so under a standard
615installation scripts will wind up in \file{/usr/local/python/bin}. If
616you want them in \file{/usr/local/bin} instead, you would supply this
Greg Warda021aca2000-04-19 22:34:11 +0000617absolute directory for the \longprogramopt{install-scripts} option:
Greg Ward29576562000-03-18 15:11:50 +0000618\begin{verbatim}
619python setup.py install --install-scripts=/usr/local/bin
620\end{verbatim}
621(This performs an installation using the ``prefix scheme,'' where the
622prefix is whatever your Python interpreter was installed with---
623\file{/usr/local/python} in this case.)
624
625If you maintain Python on Windows, you might want third-party modules to
626live in a subdirectory of \filevar{prefix}, rather than right in
627\filevar{prefix} itself. This is almost as easy as customizing the
628script installation directory---you just have to remember that there are
629two types of modules to worry about, pure modules and non-pure modules
630(i.e., modules from a non-pure distribution). For example:
631\begin{verbatim}
632python setup.py install --install-purelib=Site --install-platlib=Site
633\end{verbatim}
634The specified installation directories are relative to \filevar{prefix}.
635Of course, you also have to ensure that these directories are in
636Python's module search path, e.g. by putting a \file{.pth} file in
Greg Ward6002ffc2000-04-09 20:54:50 +0000637\filevar{prefix} (\XXX{should have a section describing .pth files and
638 cross-ref it here}).
Greg Ward29576562000-03-18 15:11:50 +0000639
640If you want to define an entire installation scheme, you just have to
641supply all of the installation directory options. The recommended way
Greg Wardc392caa2000-04-11 02:00:26 +0000642to do this is to supply relative paths; for example, if you want to
643maintain all Python module-related files under \file{python} in your
644home directory, and you want a separate directory for each platform that
645you use your home directory from, you might define the following
Greg Ward29576562000-03-18 15:11:50 +0000646installation scheme:
647\begin{verbatim}
Greg Wardc392caa2000-04-11 02:00:26 +0000648python setup.py install --home=~ \
Greg Ward29576562000-03-18 15:11:50 +0000649 --install-purelib=python/lib \
650 --install-platlib=python/lib.$PLAT \
651 --install-scripts=python/scripts
652 --install-data=python/data
653\end{verbatim}
654or, equivalently,
655\begin{verbatim}
656python setup.py install --home=~/python \
657 --install-purelib=lib \
Greg Ward19c67f82000-06-24 01:33:16 +0000658 --install-platlib='lib.$PLAT' \
Greg Ward29576562000-03-18 15:11:50 +0000659 --install-scripts=scripts
660 --install-data=data
661\end{verbatim}
662\code{\$PLAT} is not (necessarily) an environment variable---it will be
663expanded by the Distutils as it parses your command line options (just
664as it does when parsing your configuration file(s)).
665
666Obviously, specifying the entire installation scheme every time you
667install a new module distribution would be very tedious. Thus, you can
668put these options into your Distutils config file (see
Greg Warde78298a2000-04-28 17:12:24 +0000669section~\ref{config-files}):
Greg Ward169f91b2000-03-10 01:57:51 +0000670\begin{verbatim}
671[install]
Greg Ward29576562000-03-18 15:11:50 +0000672install-base=$HOME
673install-purelib=python/lib
674install-platlib=python/lib.$PLAT
675install-scripts=python/scripts
676install-data=python/data
Greg Ward169f91b2000-03-10 01:57:51 +0000677\end{verbatim}
Greg Ward29576562000-03-18 15:11:50 +0000678or, equivalently,
Greg Ward169f91b2000-03-10 01:57:51 +0000679\begin{verbatim}
680[install]
Greg Ward29576562000-03-18 15:11:50 +0000681install-base=$HOME/python
682install-purelib=lib
683install-platlib=lib.$PLAT
684install-scripts=scripts
685install-data=data
Greg Ward169f91b2000-03-10 01:57:51 +0000686\end{verbatim}
Greg Ward29576562000-03-18 15:11:50 +0000687Note that these two are \emph{not} equivalent if you supply a different
688installation base directory when you run the setup script. For example,
Greg Ward7c1e5f62000-03-10 01:56:58 +0000689\begin{verbatim}
Greg Ward29576562000-03-18 15:11:50 +0000690python setup.py --install-base=/tmp
Greg Ward7c1e5f62000-03-10 01:56:58 +0000691\end{verbatim}
Greg Ward29576562000-03-18 15:11:50 +0000692would install pure modules to \filevar{/tmp/python/lib} in the first
693case, and to \filevar{/tmp/lib} in the second case. (For the second
694case, you probably want to supply an installation base of
695\file{/tmp/python}.)
Greg Ward169f91b2000-03-10 01:57:51 +0000696
Greg Ward29576562000-03-18 15:11:50 +0000697You probably noticed the use of \code{\$HOME} and \code{\$PLAT} in the
698sample configuration file input. These are Distutils configuration
699variables, which bear a strong resemblance to environment variables. In
Greg Wardc392caa2000-04-11 02:00:26 +0000700fact, you can use environment variables in config files---on platforms
701that have such a notion---but the Distutils additionally define a few
702extra variables that may not be in your environment, such as
703\code{\$PLAT}. (And of course, you can only use the configuration
704variables supplied by the Distutils on systems that don't have
Fred Drakeeff9a872000-10-26 16:41:03 +0000705environment variables, such as MacOS (\XXX{true?}).) See
Greg Warde78298a2000-04-28 17:12:24 +0000706section~\ref{config-files} for details.
Greg Ward7c1e5f62000-03-10 01:56:58 +0000707
Fred Drakeeff9a872000-10-26 16:41:03 +0000708\XXX{need some Windows and MacOS examples---when would custom
Greg Ward6002ffc2000-04-09 20:54:50 +0000709 installation schemes be needed on those platforms?}
Greg Ward7c1e5f62000-03-10 01:56:58 +0000710
Greg Ward7c1e5f62000-03-10 01:56:58 +0000711
Greg Ward6002ffc2000-04-09 20:54:50 +0000712\section{Distutils Configuration Files}
Greg Warde78298a2000-04-28 17:12:24 +0000713\label{config-files}
Greg Ward7c1e5f62000-03-10 01:56:58 +0000714
Greg Ward7ef2ba72000-10-22 01:40:08 +0000715As mentioned above, you can use Distutils configuration files to record
716personal or site preferences for any Distutils options. That is, any
717option to any command can be stored in one of two or three (depending on
718your platform) configuration files, which will be consulted before the
719command-line is parsed. This means that configuration files will
720override default values, and the command-line will in turn override
721configuration files. Furthermore, if multiple configuration files
722apply, values from ``earlier'' files are overridden by ``later'' files.
723
724
725\subsection{Location and names of config files}
Fred Drake0bbaa512001-01-24 16:39:35 +0000726\label{config-filenames}
Greg Ward7ef2ba72000-10-22 01:40:08 +0000727
728The names and locations of the configuration files vary slightly across
Fred Drakeeff9a872000-10-26 16:41:03 +0000729platforms. On \UNIX, the three configuration files (in the order they
Greg Ward7ef2ba72000-10-22 01:40:08 +0000730are processed) are:
731\begin{tableiii}{l|l|c}{textrm}
732 {Type of file}{Location and filename}{Notes}
733 \lineiii{system}{\filenq{\filevar{prefix}/lib/python\filevar{ver}/distutils/pydistutils.cfg}}{(1)}
734 \lineiii{personal}{\filenq{\$HOME/.pydistutils.cfg}}{(2)}
735 \lineiii{local}{\filenq{setup.cfg}}{(3)}
736\end{tableiii}
737
738On Windows, the configuration files are:
739\begin{tableiii}{l|l|c}{textrm}
740 {Type of file}{Location and filename}{Notes}
741 \lineiii{system}{\filenq{\filevar{prefix}\textbackslash{}Lib\textbackslash{}distutils\textbackslash{}pydistutils.cfg}}{(4)}
742 \lineiii{personal}{\filenq{\%HOME\textbackslash{}pydistutils.cfg}}{(5)}
743 \lineiii{local}{\filenq{setup.cfg}}{(3)}
744\end{tableiii}
745
Fred Drakeeff9a872000-10-26 16:41:03 +0000746And on MacOS, they are:
Greg Ward7ef2ba72000-10-22 01:40:08 +0000747\begin{tableiii}{l|l|c}{textrm}
748 {Type of file}{Location and filename}{Notes}
749 \lineiii{system}{\filenq{\filevar{prefix}:Lib:distutils:pydistutils.cfg}}{(6)}
750 \lineiii{personal}{N/A}{}
751 \lineiii{local}{\filenq{setup.cfg}}{(3)}
752\end{tableiii}
753
754\noindent Notes:
755\begin{description}
756\item[(1)] Strictly speaking, the system-wide configuration file lives
757 in the directory where the Distutils are installed; under Python 1.6
Fred Drakeeff9a872000-10-26 16:41:03 +0000758 and later on \UNIX, this is as shown. For Python 1.5.2, the Distutils
Greg Ward7ef2ba72000-10-22 01:40:08 +0000759 will normally be installed to
760 \file{\filevar{prefix}/lib/site-packages/python1.5/distutils},
761 so the system configuration file should be put there under Python
762 1.5.2.
Fred Drakeeff9a872000-10-26 16:41:03 +0000763\item[(2)] On \UNIX, if the \envvar{HOME} environment variable is not
Greg Ward7ef2ba72000-10-22 01:40:08 +0000764 defined, the user's home directory will be determined with the
765 \function{getpwuid()} function from the standard \module{pwd} module.
766\item[(3)] I.e., in the current directory (usually the location of the
767 setup script).
768\item[(4)] (See also note (1).) Under Python 1.6 and later, Python's
769 default ``installation prefix'' is \file{C:\textbackslash{}Python}, so
770 the system configuration file is normally
771 \file{C:\textbackslash{}Python\textbackslash{}Lib\textbackslash{}distutils\textbackslash{}pydistutils.cfg}.
772 Under Python 1.5.2, the default prefix was
773 \file{C:\textbackslash{}Program~Files\textbackslash{}Python}, and the
774 Distutils were not part of the standard library---so the system
775 configuration file would be
776 \file{C:\textbackslash{}Program~Files\textbackslash{}Python\textbackslash{}distutils\textbackslash{}pydistutils.cfg}
777 in a standard Python 1.5.2 installation under Windows.
778\item[(5)] On Windows, if the \envvar{HOME} environment variable is not
779 defined, no personal configuration file will be found or used. (In
780 other words, the Distutils make no attempt to guess your home
781 directory on Windows.)
782\item[(6)] (See also notes (1) and (4).) The default installation
783 prefix is just \file{Python:}, so under Python 1.6 and later this is
784 normally\file{Python:Lib:distutils:pydistutils.cfg}. (The Distutils
Fred Drakeeff9a872000-10-26 16:41:03 +0000785 don't work very well with Python 1.5.2 under MacOS. \XXX{true?})
Greg Ward7ef2ba72000-10-22 01:40:08 +0000786\end{description}
787
788
789\subsection{Syntax of config files}
Fred Drake0bbaa512001-01-24 16:39:35 +0000790\label{config-syntax}
Greg Ward7ef2ba72000-10-22 01:40:08 +0000791
792The Distutils configuration files all have the same syntax. The config
793files are grouped into sections; there is one section for each Distutils
794command, plus a \code{global} section for global options that affect
795every command. Each section consists of one option per line, specified
796like \code{option=value}.
797
798For example, the following is a complete config file that just forces
799all commands to run quietly by default:
800\begin{verbatim}
801[global]
802verbose=0
803\end{verbatim}
804
805If this is installed as the system config file, it will affect all
806processing of any Python module distribution by any user on the current
807system. If it is installed as your personal config file (on systems
808that support them), it will affect only module distributions processed
809by you. And if it is used as the \file{setup.cfg} for a particular
810module distribution, it affects only that distribution.
811
812You could override the default ``build base'' directory and make the
813\command{build*} commands always forcibly rebuild all files with the
814following:
815\begin{verbatim}
816[build]
817build-base=blib
818force=1
819\end{verbatim}
820which corresponds to the command-line arguments
821\begin{verbatim}
822python setup.py build --build-base=blib --force
823\end{verbatim}
824except that including the \command{build} command on the command-line
825means that command will be run. Including a particular command in
826config files has no such implication; it only means that if the command
827is run, the options in the config file will apply. (Or if other
828commands that derive values from it are run, they will use the values in
829the config file.)
830
831You can find out the complete list of options for any command using the
832\longprogramopt{help} option, e.g.:
833\begin{verbatim}
834python setup.py build --help
835\end{verbatim}
836and you can find out the complete list of global options by using
837\longprogramopt{help} without a command:
838\begin{verbatim}
839python setup.py --help
840\end{verbatim}
841See also the ``Reference'' section of the ``Distributing Python
842Modules'' manual.
843
Greg Ward6002ffc2000-04-09 20:54:50 +0000844
845\section{Pre-Distutils Conventions}
Greg Warde78298a2000-04-28 17:12:24 +0000846\label{pre-distutils}
Greg Ward6002ffc2000-04-09 20:54:50 +0000847
848
Greg Wardc392caa2000-04-11 02:00:26 +0000849\subsection{The Makefile.pre.in file}
Greg Warde78298a2000-04-28 17:12:24 +0000850\label{makefile-pre-in}
Greg Ward6002ffc2000-04-09 20:54:50 +0000851
852
853\subsection{Installing modules manually}
Greg Warde78298a2000-04-28 17:12:24 +0000854\label{manual-install}
Greg Ward6002ffc2000-04-09 20:54:50 +0000855
856
857
Greg Ward7c1e5f62000-03-10 01:56:58 +0000858\end{document}