py-cvs-rel2_1 (Rev 1.2) merge
[python/dscho.git] / Doc / inst / inst.tex
blob89a4e3aa012a1f18e2dd24856ede4278259c9261
1 \documentclass{howto}
2 \usepackage{distutils}
4 \title{Installing Python Modules}
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.
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.
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!
22 \author{Greg Ward}
23 \authoraddress{E-mail: \email{gward@python.net}}
25 \makeindex
27 \begin{document}
29 \maketitle
31 \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}
39 %\begin{abstract}
40 %\noindent
41 %Abstract this!
42 %\end{abstract}
45 % The ugly "%begin{latexonly}" pseudo-environment supresses the table
46 % of contents for HTML generation.
48 %begin{latexonly}
49 \tableofcontents
50 %end{latexonly}
53 \section{Introduction}
54 \label{intro}
56 Although Python's extensive standard library covers many programming
57 needs, there often comes a time when you need to add some new
58 functionality to your Python installation in the form of third-party
59 modules. This might be necessary to support your own programming, or to
60 support an application that you want to use and that happens to be
61 written in Python.
63 In the past, there has been little support for adding third-party
64 modules to an existing Python installation. With the introduction of
65 the Python Distribution Utilities (Distutils for short) in Python 2.0,
66 this is starting to change. Not everything will change overnight,
67 though, so while this document concentrates on installing module
68 distributions that use the Distutils, we will also spend some time
69 dealing with the old ways.
71 This document is aimed primarily at the people who need to install
72 third-party Python modules: end-users and system administrators who just
73 need to get some Python application running, and existing Python
74 programmers who want to add some new goodies to their toolbox. You
75 don't need to know Python to read this document; there will be some
76 brief forays into using Python's interactive mode to explore your
77 installation, but that's it. If you're looking for information on how
78 to distribute your own Python modules so that others may use them, see
79 the \citetitle[../dist/dist.html]{Distributing Python Modules} manual.
82 \subsection{Best case: trivial installation}
83 \label{trivial-install}
85 In the best case, someone will have prepared a special version of the
86 module distribution you want to install that is targeted specifically at
87 your platform and is installed just like any other software on your
88 platform. For example, the module developer might make an executable
89 installer available for Windows users, an RPM package for users of
90 RPM-based Linux systems (Red Hat, SuSE, Mandrake, and many others), a
91 Debian package for users of Debian-based Linux systems (Debian proper,
92 Caldera, Corel, etc.), and so forth.
94 In that case, you would download the installer appropriate to your
95 platform and do the obvious thing with it: run it if it's an executable
96 installer, \code{rpm --install} it if it's an RPM, etc. You don't need
97 to run Python or a setup script, you don't need to compile
98 anything---you might not even need to read any instructions (although
99 it's always a good idea to do so anyways).
101 Of course, things will not always be that easy. You might be interested
102 in a module distribution that doesn't have an easy-to-use installer for
103 your platform. In that case, you'll have to start with the source
104 distribution released by the module's author/maintainer. Installing
105 from a source distribution is not too hard, as long as the modules are
106 packaged in the standard way. The bulk of this document is about
107 building and installing modules from standard source distributions.
110 \subsection{The new standard: Distutils}
111 \label{new-standard}
113 If you download a module source distribution, you can tell pretty
114 quickly if it was packaged and distributed in the standard way, i.e.
115 using the Distutils. First, the distribution's name and version number
116 will be featured prominently in the name of the downloaded archive, e.g.
117 \file{foo-1.0.tar.gz} or \file{widget-0.9.7.zip}. Next, the archive
118 will unpack into a similarly-named directory: \file{foo-1.0} or
119 \file{widget-0.9.7}. Additionally, the distribution will contain a
120 setup script \file{setup.py}, and a \file{README.txt} (or possibly
121 \file{README}), which should explain that building and installing the
122 module distribution is a simple matter of running
124 \begin{verbatim}
125 python setup.py install
126 \end{verbatim}
128 If all these things are true, then you already know how to build and
129 install the modules you've just downloaded: run the command above.
130 Unless you need to install things in a non-standard way or customize the
131 build process, you don't really need this manual. Or rather, the above
132 command is everything you need to get out of this manual.
135 \subsection{The old way: no standards}
136 \label{old-way}
138 Before the Distutils, there was no infrastructure to support installing
139 third-party modules in a consistent, standardized way. Thus, it's not
140 really possible to write a general manual for installing Python modules
141 that don't use the Distutils; the only truly general statement that can
142 be made is, ``Read the module's own installation instructions.''
144 However, if such instructions exist at all, they are often woefully
145 inadequate and targeted at experienced Python developers. Such users
146 are already familiar with how the Python library is laid out on their
147 platform, and know where to copy various files in order for Python to
148 find them. This document makes no such assumptions, and explains how
149 the Python library is laid out on three major platforms (\UNIX, Windows,
150 and MacOS), so that you can understand what happens when the Distutils
151 do their job \emph{and} know how to install modules manually when the
152 module author fails to provide a setup script.
154 Additionally, while there has not previously been a standard
155 installation mechanism, Python has had some standard machinery for
156 building extensions on \UNIX{} since Python 1.4. This
157 machinery (the \file{Makefile.pre.in} file) is superseded by the
158 Distutils, but it will no doubt live on in older module distributions
159 for a while. This \file{Makefile.pre.in} mechanism is documented in
160 the \citetitle[../ext/ext.html]{Extending \& Embedding Python} manual,
161 but that manual is aimed at module developers---hence, we include
162 documentation for builders/installers here.
164 All of the pre-Distutils material is tucked away in
165 section~\ref{pre-distutils}.
168 \section{Standard Build and Install}
169 \label{standard-install}
171 As described in section~\ref{new-standard}, building and installing
172 a module distribution using the Distutils is usually one simple command:
174 \begin{verbatim}
175 python setup.py install
176 \end{verbatim}
178 On \UNIX, you'd run this command from a shell prompt; on Windows, you
179 have to open a command prompt window (``DOS box'') and do it there; on
180 MacOS, things are a tad more complicated (see below).
183 \subsection{Platform variations}
184 \label{platform-variations}
186 You should always run the setup command from the distribution root
187 directory, i.e. the top-level subdirectory that the module source
188 distribution unpacks into. For example, if you've just downloaded a
189 module source distribution \file{foo-1.0.tar.gz} onto a
190 \UNIX{} system, the normal thing to do is:
192 \begin{verbatim}
193 gunzip -c foo-1.0.tar.gz | tar xf - # unpacks into directory foo-1.0
194 cd foo-1.0
195 python setup.py install
196 \end{verbatim}
198 On Windows, you'd probably download \file{foo-1.0.zip}. If you
199 downloaded the archive file to \file{C:\textbackslash{}Temp}, then it
200 would unpack into \file{C:\textbackslash{}Temp\textbackslash{}foo-1.0};
201 you can use either a GUI archive manipulator (such as WinZip) or a
202 command-line tool (such as \program{unzip} or \program{pkunzip}) to
203 unpack the archive. Then, open a command prompt window (``DOS box''),
204 and run:
206 \begin{verbatim}
207 cd c:\Temp\foo-1.0
208 python setup.py install
209 \end{verbatim}
211 On MacOS, you have to go through a bit more effort to supply
212 command-line arguments to the setup script:
213 \begin{itemize}
214 \item hit option-double-click on the script's icon (or option-drop it
215 onto the Python interpreter's icon)
216 \item press the ``Set unix-style command line'' button
217 \item set the ``Keep stdio window open on termination'' if you're
218 interested in seeing the output of the setup script (which is usually
219 voluminous and often useful)
220 \item when the command-line dialog pops up, enter ``install'' (you
221 can, of course, enter any Distutils command-line as described in this
222 document or in \citetitle[../dist/dist.html]{Distributing Python
223 Modules}: just leave off the initial \code{python setup.py} and
224 you'll be fine)
225 \end{itemize}
226 \XXX{this should change: every Distutils setup script will need
227 command-line arguments for every run (and should probably keep stdout
228 around), so all this should happen automatically for setup scripts}
231 \subsection{Splitting the job up}
232 \label{splitting-up}
234 Running \code{setup.py install} builds and installs all modules in one
235 run. If you prefer to work incrementally---especially useful if you
236 want to customize the build process, or if things are going wrong---you
237 can use the setup script to do one thing at a time. This is
238 particularly helpful when the build and install will be done by
239 different users---e.g., you might want to build a module distribution
240 and hand it off to a system administrator for installation (or do it
241 yourself, with super-user privileges).
243 For example, you can build everything in one step, and then install
244 everything in a second step, by invoking the setup script twice:
246 \begin{verbatim}
247 python setup.py build
248 python setup.py install
249 \end{verbatim}
251 (If you do this, you will notice that running the \command{install}
252 command first runs the \command{build} command, which---in this
253 case---quickly notices that it has nothing to do, since everything in
254 the \file{build} directory is up-to-date.)
256 You may not need this ability to break things down often if all you do
257 is install modules downloaded off the 'net, but it's very handy for more
258 advanced tasks. If you get into distributing your own Python modules
259 and extensions, you'll run lots of individual Distutils commands on
260 their own.
263 \subsection{How building works}
264 \label{how-build-works}
266 As implied above, the \command{build} command is responsible for putting
267 the files to install into a \emph{build directory}. By default, this is
268 \file{build} under the distribution root; if you're excessively
269 concerned with speed, or want to keep the source tree pristine, you can
270 change the build directory with the \longprogramopt{build-base} option.
271 For example:
273 \begin{verbatim}
274 python setup.py build --build-base=/tmp/pybuild/foo-1.0
275 \end{verbatim}
277 (Or you could do this permanently with a directive in your system or
278 personal Distutils configuration file; see
279 section~\ref{config-files}.) Normally, this isn't necessary.
281 The default layout for the build tree is as follows:
283 \begin{verbatim}
284 --- build/ --- lib/
286 --- build/ --- lib.<plat>/
287 temp.<plat>/
288 \end{verbatim}
290 where \code{<plat>} expands to a brief description of the current
291 OS/hardware platform and Python version. The first form, with just a
292 \file{lib} directory, is used for ``pure module distributions''---that
293 is, module distributions that include only pure Python modules. If a
294 module distribution contains any extensions (modules written in C/\Cpp),
295 then the second form, with two \code{<plat>} directories, is used. In
296 that case, the \file{temp.\filevar{plat}} directory holds temporary
297 files generated by the compile/link process that don't actually get
298 installed. In either case, the \file{lib} (or
299 \file{lib.\filevar{plat}}) directory contains all Python modules (pure
300 Python and extensions) that will be installed.
302 In the future, more directories will be added to handle Python scripts,
303 documentation, binary executables, and whatever else is needed to handle
304 the job of installing Python modules and applications.
307 \subsection{How installation works}
308 \label{how-install-works}
310 After the \command{build} command runs (whether you run it explicitly,
311 or the \command{install} command does it for you), the work of the
312 \command{install} command is relatively simple: all it has to do is copy
313 everything under \file{build/lib} (or \file{build/lib.\filevar{plat}})
314 to your chosen installation directory.
316 If you don't choose an installation directory---i.e., if you just run
317 \code{setup.py install}---then the \command{install} command installs to
318 the standard location for third-party Python modules. This location
319 varies by platform and by how you built/installed Python itself. On
320 \UNIX{} and MacOS, it also depends on whether the module distribution
321 being installed is pure Python or contains extensions (``non-pure''):
322 \begin{tableiv}{l|l|l|c}{textrm}%
323 {Platform}{Standard installation location}{Default value}{Notes}
324 \lineiv{\UNIX{} (pure)}
325 {\filenq{\filevar{prefix}/lib/python2.0/site-packages}}
326 {\filenq{/usr/local/lib/python2.0/site-packages}}
327 {(1)}
328 \lineiv{\UNIX{} (non-pure)}
329 {\filenq{\filevar{exec-prefix}/lib/python2.0/site-packages}}
330 {\filenq{/usr/local/lib/python2.0/site-packages}}
331 {(1)}
332 \lineiv{Windows}
333 {\filenq{\filevar{prefix}}}
334 {\filenq{C:\textbackslash{}Python}}
335 {(2)}
336 \lineiv{MacOS (pure)}
337 {\filenq{\filevar{prefix}:Lib:site-packages}}
338 {\filenq{Python:Lib:site-packages}}
340 \lineiv{MacOS (non-pure)}
341 {\filenq{\filevar{prefix}:Lib:site-packages}}
342 {\filenq{Python:Lib:site-packages}}
344 \end{tableiv}
346 \noindent Notes:
347 \begin{description}
348 \item[(1)] Most Linux distributions include Python as a standard part of
349 the system, so \filevar{prefix} and \filevar{exec-prefix} are usually
350 both \file{/usr} on Linux. If you build Python yourself on Linux (or
351 any \UNIX-like system), the default \filevar{prefix} and
352 \filevar{exec-prefix} are \file{/usr/local}.
353 \item[(2)] The default installation directory on Windows was
354 \file{C:\textbackslash{}Program Files\textbackslash{}Python} under
355 Python 1.6a1, 1.5.2, and earlier.
356 \end{description}
358 \filevar{prefix} and \filevar{exec-prefix} stand for the directories
359 that Python is installed to, and where it finds its libraries at
360 run-time. They are always the same under Windows and MacOS, and very
361 often the same under \UNIX. You can find out what your Python
362 installation uses for \filevar{prefix} and \filevar{exec-prefix} by
363 running Python in interactive mode and typing a few simple commands.
364 Under \UNIX, just type \code{python} at the shell prompt. Under
365 Windows, choose \menuselection{Start \sub Programs \sub Python
366 2.1 \sub Python (command line)}. Under MacOS, \XXX{???}.
367 Once the interpreter is started, you type Python code at the
368 prompt. For example, on my Linux system, I type the three Python
369 statements shown below, and get the output as shown, to find out my
370 \filevar{prefix} and \filevar{exec-prefix}:
372 \begin{verbatim}
373 Python 1.5.2 (#1, Apr 18 1999, 16:03:16) [GCC pgcc-2.91.60 19981201 (egcs-1.1.1 on linux2
374 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
375 >>> import sys
376 >>> sys.prefix
377 '/usr'
378 >>> sys.exec_prefix
379 '/usr'
380 \end{verbatim}
382 If you don't want to install modules to the standard location, or if you
383 don't have permission to write there, then you need to read about
384 alternate installations in section~\ref{alt-install}. If you want to
385 customize your installation directories more heavily, see
386 section~\ref{custom-install} on custom installations.
389 % This rather nasty macro is used to generate the tables that describe
390 % each installation scheme. It's nasty because it takes two arguments
391 % for each "slot" in an installation scheme, there will soon be more
392 % than five of these slots, and TeX has a limit of 10 arguments to a
393 % macro. Uh-oh.
395 \newcommand{\installscheme}[8]
396 {\begin{tableiii}{lll}{textrm}
397 {Type of file}
398 {Installation Directory}
399 {Override option}
400 \lineiii{pure module distribution}
401 {\filevar{#1}\filenq{#2}}
402 {\longprogramopt{install-purelib}}
403 \lineiii{non-pure module distribution}
404 {\filevar{#3}\filenq{#4}}
405 {\longprogramopt{install-platlib}}
406 \lineiii{scripts}
407 {\filevar{#5}\filenq{#6}}
408 {\longprogramopt{install-scripts}}
409 \lineiii{data}
410 {\filevar{#7}\filenq{#8}}
411 {\longprogramopt{install-data}}
412 \end{tableiii}}
415 \section{Building Extensions: Tips and Tricks}
416 \label{building-ext}
418 (This is the section to read for people doing any sort of interesting
419 build. Things to talk about:
420 \begin{itemize}
421 \item the \file{Setup} file (any platform now, but \UNIX-biased)
422 \item CFLAGS and LDFLAGS (must implement them first!)
423 \item using non-MS compilers on Windows (how to convert
424 Python's library, ...)
425 \end{itemize}
428 %\subsection{Tweaking compiler/linker flags}
429 %\label{tweak-flags}
432 \subsection{Using non-Microsoft compilers on Windows \label{non-ms-compilers}}
433 \sectionauthor{Rene Liebscher}{R.Liebscher@gmx.de}
435 \subsubsection{Borland C++}
437 This subsection describes the necessary steps to use Distutils with the
438 Borland \Cpp{} compiler version 5.5.\footnote{Check
439 \url{http://www.borland.com/bcppbuilder/freecompiler/} for download}
440 %Should we mention that users have to create cfg-files for the compiler
441 %see also http://community.borland.com/article/0,1410,21205,00.html
443 First you have to know that the Borland's object file format(OMF) is
444 different from what is used by the Python version you can download
445 from the Python web site. (Python is built with Microsoft Visual \Cpp,
446 which uses COFF as object file format.) For this reason you have to
447 convert Python's library \file{python20.lib} into the Borland format.
448 You can do this as follows:
450 \begin{verbatim}
451 coff2omf python20.lib python20_bcpp.lib
452 \end{verbatim}
454 The \file{coff2omf} program comes with the Borland compiler. The file
455 \file{python20.lib} is in the \file{Libs} directory of your Python
456 installation. If your extension uses other libraries (zlib,...) you
457 have to convert them too.
459 The converted files have to reside in the same directories as the
460 normal libraries.
462 How does Distutils manage to use these libraries with their changed
463 names? If the extension needs a library (eg. \file{foo}) Distutils
464 checks first if it finds a library with suffix \file{_bcpp}
465 (eg. \file{foo_bcpp.lib}) and then uses this library. In the case it
466 doesn't find such a special library it uses the default name
467 (\file{foo.lib}.)\footnote{This also means you could replace all
468 existing COFF-libraries with OMF-libraries of the same name.}
470 To let Distutils compile your extension with Borland \Cpp{} you now have
471 to type:
473 \begin{verbatim}
474 python setup.py build --compiler=bcpp
475 \end{verbatim}
477 If you want to use the Borland \Cpp{} compiler as default, you should
478 consider to write it in your personal or system-wide configuration
479 file for Distutils (see section~\ref{config-files}.)
481 \XXX{One place to look: \url{http://www.cyberus.ca/~g_will/pyExtenDL.shtml}}
484 \subsubsection{GNU C / Cygwin / MinGW32}
486 This section describes the necessary steps to use Distutils with the
487 GNU C/\Cpp{} compilers in their Cygwin and MinGW32
488 distributions.\footnote{Check
489 \url{http://sources.redhat.com/cygwin/} and
490 \url{http://www.mingw.org} for more information}
492 \XXX{For a Python which was built with Cygwin, all should work without
493 any of these following steps.}
495 For these compilers we have to create some special libraries too.
496 This task is more complex as for Borland's \Cpp, because there is no
497 program to convert the library (inclusive the references on data
498 structures.)
500 First you have to create a list of symbols which the Python DLL exports.
501 (You can find a good program for this task at
502 \url{http://starship.python.net/crew/kernr/mingw32/Notes.html}, see at
503 PExports 0.42h there.)
505 \begin{verbatim}
506 pexports python20.dll >python20.def
507 \end{verbatim}
509 Then you can create from these information an import library for gcc.
511 \begin{verbatim}
512 dlltool --dllname python20.dll --def python20.def --output-lib libpython20.a
513 \end{verbatim}
514 The resulting library has to be placed in the same directory as
515 \file{python20.lib}. (Should be the \file{libs} directory under your
516 Python installation directory.)
518 If your extension uses other libraries (zlib,...) you might
519 have to convert them too.
520 The converted files have to reside in the same directories as the normal
521 libraries do.
523 To let Distutils compile your extension with Cygwin you now have to type
525 \begin{verbatim}
526 python setup.py build --compiler=cygwin
527 \end{verbatim}
529 and for Cygwin in no-cygwin mode\footnote{Then you have no POSIX emulation
530 available, but you also don't need \file{cygwin1.dll}.} or for MinGW32 type
532 \begin{verbatim}
533 python setup.py build --compiler=mingw32
534 \end{verbatim}
536 If you want to use any of these options/compilers as default, you should
537 consider to write it in your personal or system-wide configuration file
538 for Distutils (see section~\ref{config-files}.)
540 \XXX{One place to look: \url{http://www.zope.org/Members/als/tips/win32_mingw_modules}}
542 \XXX{For converted import libraries for python20, tcl83 and tk83 in
543 cygwin/mingw32 and bcpp format, see
544 \url{http://www.htw-dresden.de/~liebschr/PyOpenGL/py2.0-libs.tgz}
545 and for the missing header files of the in python2.0 included tcl/tk,
546 see \url{http://www.htw-dresden.de/\%7Eliebschr/PyOpenGL/py2.0-tk8.3-header.tgz}.}
549 \section{Alternate Installation}
550 \label{alt-install}
552 Often, it is necessary or desirable to install modules to a location
553 other than the standard location for third-party Python modules. For
554 example, on a \UNIX{} system you might not have permission to write to the
555 standard third-party module directory. Or you might wish to try out a
556 module before making it a standard part of your local Python
557 installation; this is especially true when upgrading a distribution
558 already present: you want to make sure your existing base of scripts
559 still works with the new version before actually upgrading.
561 The Distutils \command{install} command is designed to make installing
562 module distributions to an alternate location simple and painless. The
563 basic idea is that you supply a base directory for the installation, and
564 the \command{install} command picks a set of directories (called an
565 \emph{installation scheme}) under this base directory in which to
566 install files. The details differ across platforms, so read whichever
567 of the following sections applies to you.
570 \subsection{Alternate installation: \UNIX{} (the home scheme)}
571 \label{alt-install-prefix}
573 Under \UNIX, there are two ways to perform an alternate installation.
574 The ``prefix scheme'' is similar to how alternate installation works
575 under Windows and MacOS, but is not necessarily the most useful way to
576 maintain a personal Python library. Hence, we document the more
577 convenient and commonly useful ``home scheme'' first.
579 The idea behind the ``home scheme'' is that you build and maintain a
580 personal stash of Python modules, probably under your home directory.
581 Installing a new module distribution is as simple as
583 \begin{verbatim}
584 python setup.py install --home=<dir>
585 \end{verbatim}
587 where you can supply any directory you like for the \longprogramopt{home}
588 option. Lazy typists can just type a tilde (\code{\textasciitilde}); the
589 \command{install} command will expand this to your home directory:
591 \begin{verbatim}
592 python setup.py install --home=~
593 \end{verbatim}
595 The \longprogramopt{home} option defines the installation base
596 directory. Files are installed to the following directories under the
597 installation base as follows:
598 \installscheme{home}{/lib/python}
599 {home}{/lib/python}
600 {home}{/bin}
601 {home}{/share}
603 \subsection{Alternate installation: \UNIX{} (the prefix scheme)}
604 \label{alt-install-home}
606 The ``prefix scheme'' is useful when you wish to use one Python
607 installation to perform the build/install (i.e., to run the setup
608 script), but install modules into the third-party module directory of a
609 different Python installation (or something that looks like a different
610 Python installation). If this sounds a trifle unusual, it is---that's
611 why the ``home scheme'' comes first. However, there are at least two
612 known cases where the prefix scheme will be useful.
614 First, consider that many Linux distributions put Python in \file{/usr},
615 rather than the more traditional \file{/usr/local}. This is entirely
616 appropriate, since in those cases Python is part of ``the system''
617 rather than a local add-on. However, if you are installing Python
618 modules from source, you probably want them to go in
619 \file{/usr/local/lib/python1.\filevar{X}} rather than
620 \file{/usr/lib/python1.\filevar{X}}. This can be done with
622 \begin{verbatim}
623 /usr/bin/python setup.py install --prefix=/usr/local
624 \end{verbatim}
626 Another possibility is a network filesystem where the name used to write
627 to a remote directory is different from the name used to read it: for
628 example, the Python interpreter accessed as \file{/usr/local/bin/python}
629 might search for modules in \file{/usr/local/lib/python1.\filevar{X}},
630 but those modules would have to be installed to, say,
631 \file{/mnt/\filevar{@server}/export/lib/python1.\filevar{X}}. This
632 could be done with
634 \begin{verbatim}
635 /usr/local/bin/python setup.py install --prefix=/mnt/@server/export
636 \end{verbatim}
638 In either case, the \longprogramopt{prefix} option defines the
639 installation base, and the \longprogramopt{exec-prefix} option defines
640 the platform-specific installation base, which is used for
641 platform-specific files. (Currently, this just means non-pure module
642 distributions, but could be expanded to C libraries, binary executables,
643 etc.) If \longprogramopt{exec-prefix} is not supplied, it defaults to
644 \longprogramopt{prefix}. Files are installed as follows:
646 \installscheme{prefix}{/lib/python1.\filevar{X}/site-packages}
647 {exec-prefix}{/lib/python1.\filevar{X}/site-packages}
648 {prefix}{/bin}
649 {prefix}{/share}
651 There is no requirement that \longprogramopt{prefix} or
652 \longprogramopt{exec-prefix} actually point to an alternate Python
653 installation; if the directories listed above do not already exist, they
654 are created at installation time.
656 Incidentally, the real reason the prefix scheme is important is simply
657 that a standard \UNIX{} installation uses the prefix scheme, but with
658 \longprogramopt{prefix} and \longprogramopt{exec-prefix} supplied by
659 Python itself (as \code{sys.prefix} and \code{sys.exec\_prefix}). Thus,
660 you might think you'll never use the prefix scheme, but every time you
661 run \code{python setup.py install} without any other options, you're
662 using it.
664 Note that installing extensions to an alternate Python installation has
665 no effect on how those extensions are built: in particular, the Python
666 header files (\file{Python.h} and friends) installed with the Python
667 interpreter used to run the setup script will be used in compiling
668 extensions. It is your responsibility to ensure that the interpreter
669 used to run extensions installed in this way is compatibile with the
670 interpreter used to build them. The best way to do this is to ensure
671 that the two interpreters are the same version of Python (possibly
672 different builds, or possibly copies of the same build). (Of course, if
673 your \longprogramopt{prefix} and \longprogramopt{exec-prefix} don't even
674 point to an alternate Python installation, this is immaterial.)
677 \subsection{Alternate installation: Windows}
678 \label{alt-install-windows}
680 Since Windows has no conception of a user's home directory, and since
681 the standard Python installation under Windows is simpler than that
682 under \UNIX, there's no point in having separate \longprogramopt{prefix}
683 and \longprogramopt{home} options. Just use the \longprogramopt{prefix}
684 option to specify a base directory, e.g.
686 \begin{verbatim}
687 python setup.py install --prefix="\Temp\Python"
688 \end{verbatim}
690 to install modules to the \file{\textbackslash{}Temp} directory on the current
691 drive.
693 The installation base is defined by the \longprogramopt{prefix} option;
694 the \longprogramopt{exec-prefix} option is not supported under Windows.
695 Files are installed as follows:
696 \installscheme{prefix}{}
697 {prefix}{}
698 {prefix}{\textbackslash{}Scripts}
699 {prefix}{\textbackslash{}Data}
702 \subsection{Alternate installation: MacOS}
703 \label{alt-install-macos}
705 Like Windows, MacOS has no notion of home directories (or even of
706 users), and a fairly simple standard Python installation. Thus, only a
707 \longprogramopt{prefix} option is needed. It defines the installation
708 base, and files are installed under it as follows:
710 \installscheme{prefix}{:Lib:site-packages}
711 {prefix}{:Lib:site-packages}
712 {prefix}{:Scripts}
713 {prefix}{:Data}
715 See section~\ref{platform-variations} for information on supplying
716 command-line arguments to the setup script with MacPython.
719 \section{Custom Installation}
720 \label{custom-install}
722 Sometimes, the alternate installation schemes described in
723 section~\ref{alt-install} just don't do what you want. You might
724 want to tweak just one or two directories while keeping everything under
725 the same base directory, or you might want to completely redefine the
726 installation scheme. In either case, you're creating a \emph{custom
727 installation scheme}.
729 You probably noticed the column of ``override options'' in the tables
730 describing the alternate installation schemes above. Those options are
731 how you define a custom installation scheme. These override options can
732 be relative, absolute, or explicitly defined in terms of one of the
733 installation base directories. (There are two installation base
734 directories, and they are normally the same---they only differ when you
735 use the \UNIX{} ``prefix scheme'' and supply different
736 \longprogramopt{prefix} and \longprogramopt{exec-prefix} options.)
738 For example, say you're installing a module distribution to your home
739 directory under \UNIX---but you want scripts to go in
740 \file{\textasciitilde/scripts} rather than \file{\textasciitilde/bin}.
741 As you might expect, you can override this directory with the
742 \longprogramopt{install-scripts} option; in this case, it makes most
743 sense to supply a relative path, which will be interpreted relative to
744 the installation base directory (your home directory, in this case):
746 \begin{verbatim}
747 python setup.py install --home=~ --install-scripts=scripts
748 \end{verbatim}
750 Another \UNIX{} example: suppose your Python installation was built and
751 installed with a prefix of \file{/usr/local/python}, so under a standard
752 installation scripts will wind up in \file{/usr/local/python/bin}. If
753 you want them in \file{/usr/local/bin} instead, you would supply this
754 absolute directory for the \longprogramopt{install-scripts} option:
756 \begin{verbatim}
757 python setup.py install --install-scripts=/usr/local/bin
758 \end{verbatim}
760 (This performs an installation using the ``prefix scheme,'' where the
761 prefix is whatever your Python interpreter was installed with---
762 \file{/usr/local/python} in this case.)
764 If you maintain Python on Windows, you might want third-party modules to
765 live in a subdirectory of \filevar{prefix}, rather than right in
766 \filevar{prefix} itself. This is almost as easy as customizing the
767 script installation directory---you just have to remember that there are
768 two types of modules to worry about, pure modules and non-pure modules
769 (i.e., modules from a non-pure distribution). For example:
771 \begin{verbatim}
772 python setup.py install --install-purelib=Site --install-platlib=Site
773 \end{verbatim}
775 The specified installation directories are relative to \filevar{prefix}.
776 Of course, you also have to ensure that these directories are in
777 Python's module search path, e.g. by putting a \file{.pth} file in
778 \filevar{prefix} (\XXX{should have a section describing .pth files and
779 cross-ref it here}).
781 If you want to define an entire installation scheme, you just have to
782 supply all of the installation directory options. The recommended way
783 to do this is to supply relative paths; for example, if you want to
784 maintain all Python module-related files under \file{python} in your
785 home directory, and you want a separate directory for each platform that
786 you use your home directory from, you might define the following
787 installation scheme:
789 \begin{verbatim}
790 python setup.py install --home=~ \
791 --install-purelib=python/lib \
792 --install-platlib=python/lib.$PLAT \
793 --install-scripts=python/scripts
794 --install-data=python/data
795 \end{verbatim}
796 % $ % -- bow to font-lock
798 or, equivalently,
800 \begin{verbatim}
801 python setup.py install --home=~/python \
802 --install-purelib=lib \
803 --install-platlib='lib.$PLAT' \
804 --install-scripts=scripts
805 --install-data=data
806 \end{verbatim}
807 % $ % -- bow to font-lock
809 \code{\$PLAT} is not (necessarily) an environment variable---it will be
810 expanded by the Distutils as it parses your command line options (just
811 as it does when parsing your configuration file(s)).
813 Obviously, specifying the entire installation scheme every time you
814 install a new module distribution would be very tedious. Thus, you can
815 put these options into your Distutils config file (see
816 section~\ref{config-files}):
818 \begin{verbatim}
819 [install]
820 install-base=$HOME
821 install-purelib=python/lib
822 install-platlib=python/lib.$PLAT
823 install-scripts=python/scripts
824 install-data=python/data
825 \end{verbatim}
827 or, equivalently,
829 \begin{verbatim}
830 [install]
831 install-base=$HOME/python
832 install-purelib=lib
833 install-platlib=lib.$PLAT
834 install-scripts=scripts
835 install-data=data
836 \end{verbatim}
838 Note that these two are \emph{not} equivalent if you supply a different
839 installation base directory when you run the setup script. For example,
841 \begin{verbatim}
842 python setup.py --install-base=/tmp
843 \end{verbatim}
845 would install pure modules to \filevar{/tmp/python/lib} in the first
846 case, and to \filevar{/tmp/lib} in the second case. (For the second
847 case, you probably want to supply an installation base of
848 \file{/tmp/python}.)
850 You probably noticed the use of \code{\$HOME} and \code{\$PLAT} in the
851 sample configuration file input. These are Distutils configuration
852 variables, which bear a strong resemblance to environment variables. In
853 fact, you can use environment variables in config files---on platforms
854 that have such a notion---but the Distutils additionally define a few
855 extra variables that may not be in your environment, such as
856 \code{\$PLAT}. (And of course, you can only use the configuration
857 variables supplied by the Distutils on systems that don't have
858 environment variables, such as MacOS (\XXX{true?}).) See
859 section~\ref{config-files} for details.
861 \XXX{need some Windows and MacOS examples---when would custom
862 installation schemes be needed on those platforms?}
865 \section{Distutils Configuration Files}
866 \label{config-files}
868 As mentioned above, you can use Distutils configuration files to record
869 personal or site preferences for any Distutils options. That is, any
870 option to any command can be stored in one of two or three (depending on
871 your platform) configuration files, which will be consulted before the
872 command-line is parsed. This means that configuration files will
873 override default values, and the command-line will in turn override
874 configuration files. Furthermore, if multiple configuration files
875 apply, values from ``earlier'' files are overridden by ``later'' files.
878 \subsection{Location and names of config files}
879 \label{config-filenames}
881 The names and locations of the configuration files vary slightly across
882 platforms. On \UNIX, the three configuration files (in the order they
883 are processed) are:
884 \begin{tableiii}{l|l|c}{textrm}
885 {Type of file}{Location and filename}{Notes}
886 \lineiii{system}{\filenq{\filevar{prefix}/lib/python\filevar{ver}/distutils/pydistutils.cfg}}{(1)}
887 \lineiii{personal}{\filenq{\$HOME/.pydistutils.cfg}}{(2)}
888 \lineiii{local}{\filenq{setup.cfg}}{(3)}
889 \end{tableiii}
891 On Windows, the configuration files are:
892 \begin{tableiii}{l|l|c}{textrm}
893 {Type of file}{Location and filename}{Notes}
894 \lineiii{system}{\filenq{\filevar{prefix}\textbackslash{}Lib\textbackslash{}distutils\textbackslash{}pydistutils.cfg}}{(4)}
895 \lineiii{personal}{\filenq{\%HOME\textbackslash{}pydistutils.cfg}}{(5)}
896 \lineiii{local}{\filenq{setup.cfg}}{(3)}
897 \end{tableiii}
899 And on MacOS, they are:
900 \begin{tableiii}{l|l|c}{textrm}
901 {Type of file}{Location and filename}{Notes}
902 \lineiii{system}{\filenq{\filevar{prefix}:Lib:distutils:pydistutils.cfg}}{(6)}
903 \lineiii{personal}{N/A}{}
904 \lineiii{local}{\filenq{setup.cfg}}{(3)}
905 \end{tableiii}
907 \noindent Notes:
908 \begin{description}
909 \item[(1)] Strictly speaking, the system-wide configuration file lives
910 in the directory where the Distutils are installed; under Python 1.6
911 and later on \UNIX, this is as shown. For Python 1.5.2, the Distutils
912 will normally be installed to
913 \file{\filevar{prefix}/lib/site-packages/python1.5/distutils},
914 so the system configuration file should be put there under Python
915 1.5.2.
916 \item[(2)] On \UNIX, if the \envvar{HOME} environment variable is not
917 defined, the user's home directory will be determined with the
918 \function{getpwuid()} function from the standard \module{pwd} module.
919 \item[(3)] I.e., in the current directory (usually the location of the
920 setup script).
921 \item[(4)] (See also note (1).) Under Python 1.6 and later, Python's
922 default ``installation prefix'' is \file{C:\textbackslash{}Python}, so
923 the system configuration file is normally
924 \file{C:\textbackslash{}Python\textbackslash{}Lib\textbackslash{}distutils\textbackslash{}pydistutils.cfg}.
925 Under Python 1.5.2, the default prefix was
926 \file{C:\textbackslash{}Program~Files\textbackslash{}Python}, and the
927 Distutils were not part of the standard library---so the system
928 configuration file would be
929 \file{C:\textbackslash{}Program~Files\textbackslash{}Python\textbackslash{}distutils\textbackslash{}pydistutils.cfg}
930 in a standard Python 1.5.2 installation under Windows.
931 \item[(5)] On Windows, if the \envvar{HOME} environment variable is not
932 defined, no personal configuration file will be found or used. (In
933 other words, the Distutils make no attempt to guess your home
934 directory on Windows.)
935 \item[(6)] (See also notes (1) and (4).) The default installation
936 prefix is just \file{Python:}, so under Python 1.6 and later this is
937 normally\file{Python:Lib:distutils:pydistutils.cfg}. (The Distutils
938 don't work very well with Python 1.5.2 under MacOS. \XXX{true?})
939 \end{description}
942 \subsection{Syntax of config files}
943 \label{config-syntax}
945 The Distutils configuration files all have the same syntax. The config
946 files are grouped into sections; there is one section for each Distutils
947 command, plus a \code{global} section for global options that affect
948 every command. Each section consists of one option per line, specified
949 like \code{option=value}.
951 For example, the following is a complete config file that just forces
952 all commands to run quietly by default:
954 \begin{verbatim}
955 [global]
956 verbose=0
957 \end{verbatim}
959 If this is installed as the system config file, it will affect all
960 processing of any Python module distribution by any user on the current
961 system. If it is installed as your personal config file (on systems
962 that support them), it will affect only module distributions processed
963 by you. And if it is used as the \file{setup.cfg} for a particular
964 module distribution, it affects only that distribution.
966 You could override the default ``build base'' directory and make the
967 \command{build*} commands always forcibly rebuild all files with the
968 following:
970 \begin{verbatim}
971 [build]
972 build-base=blib
973 force=1
974 \end{verbatim}
976 which corresponds to the command-line arguments
978 \begin{verbatim}
979 python setup.py build --build-base=blib --force
980 \end{verbatim}
982 except that including the \command{build} command on the command-line
983 means that command will be run. Including a particular command in
984 config files has no such implication; it only means that if the command
985 is run, the options in the config file will apply. (Or if other
986 commands that derive values from it are run, they will use the values in
987 the config file.)
989 You can find out the complete list of options for any command using the
990 \longprogramopt{help} option, e.g.:
992 \begin{verbatim}
993 python setup.py build --help
994 \end{verbatim}
996 and you can find out the complete list of global options by using
997 \longprogramopt{help} without a command:
999 \begin{verbatim}
1000 python setup.py --help
1001 \end{verbatim}
1003 See also the ``Reference'' section of the ``Distributing Python
1004 Modules'' manual.
1007 %\section{Pre-Distutils Conventions}
1008 %\label{pre-distutils}
1011 %\subsection{The Makefile.pre.in file}
1012 %\label{makefile-pre-in}
1015 %\subsection{Installing modules manually}
1016 %\label{manual-install}
1019 \end{document}