blob: 7db3761bc6d20eb386b8088320b8fd012da51c6f [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
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +00004% TODO:
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +00005% Fill in XXX comments
6
Greg Ward7c1e5f62000-03-10 01:56:58 +00007\title{Installing Python Modules}
8
9% The audience for this document includes people who don't know anything
10% about Python and aren't about to learn the language just in order to
11% install and maintain it for their users, i.e. system administrators.
12% Thus, I have to be sure to explain the basics at some point:
13% sys.path and PYTHONPATH at least. Should probably give pointers to
14% other docs on "import site", PYTHONSTARTUP, PYTHONHOME, etc.
15%
Greg Ward7c1e5f62000-03-10 01:56:58 +000016% Finally, it might be useful to include all the material from my "Care
17% and Feeding of a Python Installation" talk in here somewhere. Yow!
18
Fred Drake6d98f192004-01-26 15:07:31 +000019\input{boilerplate}
20
Greg Ward7c1e5f62000-03-10 01:56:58 +000021\author{Greg Ward}
Fred Drakeb914ef02004-01-02 06:57:50 +000022\authoraddress{
23 \strong{Python Software Foundation}\\
24 Email: \email{distutils-sig@python.org}
25}
Greg Ward7c1e5f62000-03-10 01:56:58 +000026
Greg Warde3cca262000-08-31 16:36:31 +000027\makeindex
Greg Ward7c1e5f62000-03-10 01:56:58 +000028
29\begin{document}
30
31\maketitle
32
Greg Warde3cca262000-08-31 16:36:31 +000033\begin{abstract}
34 \noindent
35 This document describes the Python Distribution Utilities
36 (``Distutils'') from the end-user's point-of-view, describing how to
37 extend the capabilities of a standard Python installation by building
38 and installing third-party Python modules and extensions.
39\end{abstract}
40
Greg Ward7c1e5f62000-03-10 01:56:58 +000041%\begin{abstract}
42%\noindent
43%Abstract this!
44%\end{abstract}
45
Fred Drakea9a83e92001-03-01 18:37:52 +000046
47% The ugly "%begin{latexonly}" pseudo-environment supresses the table
48% of contents for HTML generation.
49%
50%begin{latexonly}
Greg Ward7c1e5f62000-03-10 01:56:58 +000051\tableofcontents
Fred Drakea9a83e92001-03-01 18:37:52 +000052%end{latexonly}
53
Greg Ward7c1e5f62000-03-10 01:56:58 +000054
55\section{Introduction}
Greg Warde78298a2000-04-28 17:12:24 +000056\label{intro}
Greg Ward7c1e5f62000-03-10 01:56:58 +000057
Greg Ward6002ffc2000-04-09 20:54:50 +000058Although Python's extensive standard library covers many programming
59needs, there often comes a time when you need to add some new
60functionality to your Python installation in the form of third-party
61modules. This might be necessary to support your own programming, or to
62support an application that you want to use and that happens to be
63written in Python.
64
65In the past, there has been little support for adding third-party
66modules to an existing Python installation. With the introduction of
Fred Drake01df4532000-06-30 03:36:41 +000067the Python Distribution Utilities (Distutils for short) in Python 2.0,
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +000068this changed.
Greg Ward6002ffc2000-04-09 20:54:50 +000069
70This document is aimed primarily at the people who need to install
71third-party Python modules: end-users and system administrators who just
72need to get some Python application running, and existing Python
73programmers who want to add some new goodies to their toolbox. You
74don't need to know Python to read this document; there will be some
75brief forays into using Python's interactive mode to explore your
76installation, but that's it. If you're looking for information on how
77to distribute your own Python modules so that others may use them, see
Fred Drake01df4532000-06-30 03:36:41 +000078the \citetitle[../dist/dist.html]{Distributing Python Modules} manual.
Greg Ward7c1e5f62000-03-10 01:56:58 +000079
80
Greg Ward6002ffc2000-04-09 20:54:50 +000081\subsection{Best case: trivial installation}
Greg Ward1ed49ee2000-09-13 00:00:58 +000082\label{trivial-install}
Greg Ward6002ffc2000-04-09 20:54:50 +000083
84In the best case, someone will have prepared a special version of the
85module distribution you want to install that is targeted specifically at
86your platform and is installed just like any other software on your
87platform. For example, the module developer might make an executable
88installer available for Windows users, an RPM package for users of
89RPM-based Linux systems (Red Hat, SuSE, Mandrake, and many others), a
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +000090Debian package for users of Debian-based Linux systems, and so forth.
Greg Ward6002ffc2000-04-09 20:54:50 +000091
92In that case, you would download the installer appropriate to your
Greg Wardc392caa2000-04-11 02:00:26 +000093platform and do the obvious thing with it: run it if it's an executable
94installer, \code{rpm --install} it if it's an RPM, etc. You don't need
95to run Python or a setup script, you don't need to compile
96anything---you might not even need to read any instructions (although
97it's always a good idea to do so anyways).
Greg Ward6002ffc2000-04-09 20:54:50 +000098
99Of course, things will not always be that easy. You might be interested
Greg Wardc392caa2000-04-11 02:00:26 +0000100in a module distribution that doesn't have an easy-to-use installer for
101your platform. In that case, you'll have to start with the source
102distribution released by the module's author/maintainer. Installing
103from a source distribution is not too hard, as long as the modules are
104packaged in the standard way. The bulk of this document is about
105building and installing modules from standard source distributions.
Greg Ward7c1e5f62000-03-10 01:56:58 +0000106
107
Greg Ward6002ffc2000-04-09 20:54:50 +0000108\subsection{The new standard: Distutils}
Greg Warde78298a2000-04-28 17:12:24 +0000109\label{new-standard}
Greg Ward6002ffc2000-04-09 20:54:50 +0000110
111If you download a module source distribution, you can tell pretty
Greg Ward19c67f82000-06-24 01:33:16 +0000112quickly if it was packaged and distributed in the standard way, i.e.
113using the Distutils. First, the distribution's name and version number
114will be featured prominently in the name of the downloaded archive, e.g.
Greg Ward6002ffc2000-04-09 20:54:50 +0000115\file{foo-1.0.tar.gz} or \file{widget-0.9.7.zip}. Next, the archive
116will unpack into a similarly-named directory: \file{foo-1.0} or
117\file{widget-0.9.7}. Additionally, the distribution will contain a
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000118setup script \file{setup.py}, and a file named \file{README.txt} or possibly
119just \file{README}, which should explain that building and installing the
Greg Ward6002ffc2000-04-09 20:54:50 +0000120module distribution is a simple matter of running
Fred Drakea9a83e92001-03-01 18:37:52 +0000121
Greg Ward6002ffc2000-04-09 20:54:50 +0000122\begin{verbatim}
123python setup.py install
124\end{verbatim}
125
126If all these things are true, then you already know how to build and
Fred Drake8612a432002-10-31 20:46:20 +0000127install the modules you've just downloaded: Run the command above.
Greg Ward6002ffc2000-04-09 20:54:50 +0000128Unless you need to install things in a non-standard way or customize the
129build process, you don't really need this manual. Or rather, the above
130command is everything you need to get out of this manual.
Greg Ward7c1e5f62000-03-10 01:56:58 +0000131
132
Greg Ward29576562000-03-18 15:11:50 +0000133\section{Standard Build and Install}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000134\label{standard-install}
Greg Ward7c1e5f62000-03-10 01:56:58 +0000135
Greg Warde78298a2000-04-28 17:12:24 +0000136As described in section~\ref{new-standard}, building and installing
Greg Ward6002ffc2000-04-09 20:54:50 +0000137a module distribution using the Distutils is usually one simple command:
Fred Drakea9a83e92001-03-01 18:37:52 +0000138
Greg Ward6002ffc2000-04-09 20:54:50 +0000139\begin{verbatim}
140python setup.py install
141\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000142
Fred Drakeeff9a872000-10-26 16:41:03 +0000143On \UNIX, you'd run this command from a shell prompt; on Windows, you
Greg Warde24f05e2000-09-12 23:55:19 +0000144have to open a command prompt window (``DOS box'') and do it there; on
Fred Drake74f1a562001-09-25 15:12:41 +0000145Mac OS, things are a tad more complicated (see below).
Greg Ward6002ffc2000-04-09 20:54:50 +0000146
147
148\subsection{Platform variations}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000149\label{platform-variations}
Greg Ward6002ffc2000-04-09 20:54:50 +0000150
151You should always run the setup command from the distribution root
152directory, i.e. the top-level subdirectory that the module source
153distribution unpacks into. For example, if you've just downloaded a
Fred Drakeeff9a872000-10-26 16:41:03 +0000154module source distribution \file{foo-1.0.tar.gz} onto a
155\UNIX{} system, the normal thing to do is:
Fred Drakea9a83e92001-03-01 18:37:52 +0000156
Greg Ward6002ffc2000-04-09 20:54:50 +0000157\begin{verbatim}
158gunzip -c foo-1.0.tar.gz | tar xf - # unpacks into directory foo-1.0
159cd foo-1.0
160python setup.py install
161\end{verbatim}
162
Greg Warde24f05e2000-09-12 23:55:19 +0000163On Windows, you'd probably download \file{foo-1.0.zip}. If you
164downloaded the archive file to \file{C:\textbackslash{}Temp}, then it
165would unpack into \file{C:\textbackslash{}Temp\textbackslash{}foo-1.0};
Martin v. Löwis95cf84a2003-10-19 07:32:24 +0000166you can use either a archive manipulator with a graphical user interface
Fred Drake17f690f2001-07-14 02:14:42 +0000167(such as WinZip) or a command-line tool (such as \program{unzip} or
168\program{pkunzip}) to unpack the archive. Then, open a command prompt
169window (``DOS box''), and run:
Fred Drakea9a83e92001-03-01 18:37:52 +0000170
Greg Ward6002ffc2000-04-09 20:54:50 +0000171\begin{verbatim}
Greg Warde24f05e2000-09-12 23:55:19 +0000172cd c:\Temp\foo-1.0
Greg Ward6002ffc2000-04-09 20:54:50 +0000173python setup.py install
174\end{verbatim}
175
Andrew M. Kuchlingd680a862002-11-27 13:34:20 +0000176On Mac OS 9, you double-click the \file{setup.py} script. It will bring
177up a dialog where you can select the \command{install} command. Then
178selecting the \command{run} button will install your distribution.
179The dialog is built dynamically, so all commands and options for this
180specific distribution are listed.
Greg Ward6002ffc2000-04-09 20:54:50 +0000181
182\subsection{Splitting the job up}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000183\label{splitting-up}
Greg Ward6002ffc2000-04-09 20:54:50 +0000184
185Running \code{setup.py install} builds and installs all modules in one
Greg Ward14deaae2000-09-11 00:33:15 +0000186run. If you prefer to work incrementally---especially useful if you
187want to customize the build process, or if things are going wrong---you
188can use the setup script to do one thing at a time. This is
Greg Ward3e7b1332000-05-30 03:00:43 +0000189particularly helpful when the build and install will be done by
Fred Drake8612a432002-10-31 20:46:20 +0000190different users---for example, you might want to build a module distribution
Greg Ward3e7b1332000-05-30 03:00:43 +0000191and hand it off to a system administrator for installation (or do it
192yourself, with super-user privileges).
Greg Ward6002ffc2000-04-09 20:54:50 +0000193
194For example, you can build everything in one step, and then install
195everything in a second step, by invoking the setup script twice:
Fred Drakea9a83e92001-03-01 18:37:52 +0000196
Greg Ward6002ffc2000-04-09 20:54:50 +0000197\begin{verbatim}
198python setup.py build
199python setup.py install
200\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000201
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000202If you do this, you will notice that running the \command{install}
Greg Ward14deaae2000-09-11 00:33:15 +0000203command first runs the \command{build} command, which---in this
204case---quickly notices that it has nothing to do, since everything in
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000205the \file{build} directory is up-to-date.
Greg Ward29576562000-03-18 15:11:50 +0000206
Greg Ward14deaae2000-09-11 00:33:15 +0000207You may not need this ability to break things down often if all you do
208is install modules downloaded off the 'net, but it's very handy for more
209advanced tasks. If you get into distributing your own Python modules
210and extensions, you'll run lots of individual Distutils commands on
211their own.
Greg Ward7c1e5f62000-03-10 01:56:58 +0000212
213
Greg Wardc392caa2000-04-11 02:00:26 +0000214\subsection{How building works}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000215\label{how-build-works}
Greg Ward7c1e5f62000-03-10 01:56:58 +0000216
Greg Wardc392caa2000-04-11 02:00:26 +0000217As implied above, the \command{build} command is responsible for putting
218the files to install into a \emph{build directory}. By default, this is
219\file{build} under the distribution root; if you're excessively
220concerned with speed, or want to keep the source tree pristine, you can
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000221change the build directory with the \longprogramopt{build-base} option.
222For example:
Fred Drakea9a83e92001-03-01 18:37:52 +0000223
Greg Wardc392caa2000-04-11 02:00:26 +0000224\begin{verbatim}
225python setup.py build --build-base=/tmp/pybuild/foo-1.0
226\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000227
Greg Wardc392caa2000-04-11 02:00:26 +0000228(Or you could do this permanently with a directive in your system or
229personal Distutils configuration file; see
Greg Warde78298a2000-04-28 17:12:24 +0000230section~\ref{config-files}.) Normally, this isn't necessary.
Greg Wardc392caa2000-04-11 02:00:26 +0000231
232The default layout for the build tree is as follows:
Fred Drakea9a83e92001-03-01 18:37:52 +0000233
Greg Wardc392caa2000-04-11 02:00:26 +0000234\begin{verbatim}
235--- build/ --- lib/
236or
237--- build/ --- lib.<plat>/
238 temp.<plat>/
239\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000240
Greg Wardc392caa2000-04-11 02:00:26 +0000241where \code{<plat>} expands to a brief description of the current
Greg Ward7ef2ba72000-10-22 01:40:08 +0000242OS/hardware platform and Python version. The first form, with just a
243\file{lib} directory, is used for ``pure module distributions''---that
244is, module distributions that include only pure Python modules. If a
Fred Drake42119e42001-03-03 19:47:24 +0000245module distribution contains any extensions (modules written in C/\Cpp),
Greg Ward7ef2ba72000-10-22 01:40:08 +0000246then the second form, with two \code{<plat>} directories, is used. In
247that case, the \file{temp.\filevar{plat}} directory holds temporary
248files generated by the compile/link process that don't actually get
249installed. In either case, the \file{lib} (or
Greg Wardc392caa2000-04-11 02:00:26 +0000250\file{lib.\filevar{plat}}) directory contains all Python modules (pure
251Python and extensions) that will be installed.
252
253In the future, more directories will be added to handle Python scripts,
254documentation, binary executables, and whatever else is needed to handle
Greg Wardd5faa7e2000-04-12 01:42:19 +0000255the job of installing Python modules and applications.
Greg Wardc392caa2000-04-11 02:00:26 +0000256
257
258\subsection{How installation works}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000259\label{how-install-works}
Greg Wardc392caa2000-04-11 02:00:26 +0000260
261After the \command{build} command runs (whether you run it explicitly,
262or the \command{install} command does it for you), the work of the
263\command{install} command is relatively simple: all it has to do is copy
264everything under \file{build/lib} (or \file{build/lib.\filevar{plat}})
265to your chosen installation directory.
266
267If you don't choose an installation directory---i.e., if you just run
268\code{setup.py install}---then the \command{install} command installs to
269the standard location for third-party Python modules. This location
270varies by platform and by how you built/installed Python itself. On
Fred Drake74f1a562001-09-25 15:12:41 +0000271\UNIX{} and Mac OS, it also depends on whether the module distribution
Greg Wardc392caa2000-04-11 02:00:26 +0000272being installed is pure Python or contains extensions (``non-pure''):
Greg Wardd5faa7e2000-04-12 01:42:19 +0000273\begin{tableiv}{l|l|l|c}{textrm}%
274 {Platform}{Standard installation location}{Default value}{Notes}
Fred Drakeeff9a872000-10-26 16:41:03 +0000275 \lineiv{\UNIX{} (pure)}
Andrew M. Kuchling67ca7032004-08-07 21:30:13 +0000276 {\filenq{\filevar{prefix}/lib/python2.4/site-packages}}
277 {\filenq{/usr/local/lib/python2.4/site-packages}}
Greg Ward502d2b42000-04-12 14:20:15 +0000278 {(1)}
Fred Drakeeff9a872000-10-26 16:41:03 +0000279 \lineiv{\UNIX{} (non-pure)}
Andrew M. Kuchling67ca7032004-08-07 21:30:13 +0000280 {\filenq{\filevar{exec-prefix}/lib/python2.4/site-packages}}
281 {\filenq{/usr/local/lib/python2.4/site-packages}}
Greg Ward502d2b42000-04-12 14:20:15 +0000282 {(1)}
Greg Wardd5faa7e2000-04-12 01:42:19 +0000283 \lineiv{Windows}
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000284 {\filenq{\filevar{prefix}}}
Greg Ward4756e5f2000-04-19 22:40:12 +0000285 {\filenq{C:\textbackslash{}Python}}
Greg Ward502d2b42000-04-12 14:20:15 +0000286 {(2)}
Fred Drake74f1a562001-09-25 15:12:41 +0000287 \lineiv{Mac OS (pure)}
Greg Ward7ef2ba72000-10-22 01:40:08 +0000288 {\filenq{\filevar{prefix}:Lib:site-packages}}
289 {\filenq{Python:Lib:site-packages}}
Greg Wardd5faa7e2000-04-12 01:42:19 +0000290 {}
Fred Drake74f1a562001-09-25 15:12:41 +0000291 \lineiv{Mac OS (non-pure)}
Greg Ward7ef2ba72000-10-22 01:40:08 +0000292 {\filenq{\filevar{prefix}:Lib:site-packages}}
293 {\filenq{Python:Lib:site-packages}}
Greg Wardd5faa7e2000-04-12 01:42:19 +0000294 {}
295\end{tableiv}
296
297\noindent Notes:
298\begin{description}
Greg Ward502d2b42000-04-12 14:20:15 +0000299\item[(1)] Most Linux distributions include Python as a standard part of
300 the system, so \filevar{prefix} and \filevar{exec-prefix} are usually
301 both \file{/usr} on Linux. If you build Python yourself on Linux (or
Fred Drakeeff9a872000-10-26 16:41:03 +0000302 any \UNIX-like system), the default \filevar{prefix} and
Greg Ward502d2b42000-04-12 14:20:15 +0000303 \filevar{exec-prefix} are \file{/usr/local}.
304\item[(2)] The default installation directory on Windows was
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000305 \file{C:\textbackslash{}Program Files\textbackslash{}Python} under
306 Python 1.6a1, 1.5.2, and earlier.
Greg Wardd5faa7e2000-04-12 01:42:19 +0000307\end{description}
308
Greg Wardc392caa2000-04-11 02:00:26 +0000309\filevar{prefix} and \filevar{exec-prefix} stand for the directories
310that Python is installed to, and where it finds its libraries at
Fred Drake74f1a562001-09-25 15:12:41 +0000311run-time. They are always the same under Windows and Mac OS, and very
Fred Drakeeff9a872000-10-26 16:41:03 +0000312often the same under \UNIX. You can find out what your Python
Greg Wardc392caa2000-04-11 02:00:26 +0000313installation uses for \filevar{prefix} and \filevar{exec-prefix} by
314running Python in interactive mode and typing a few simple commands.
Fred Drakeb2d10062001-07-06 22:46:52 +0000315Under \UNIX, just type \code{python} at the shell prompt. Under
316Windows, choose \menuselection{Start \sub Programs \sub Python
Andrew M. Kuchling67ca7032004-08-07 21:30:13 +00003172.4 \sub Python (command line)}. Under Mac OS 9, start \file{PythonInterpreter}.
Fred Drake01df4532000-06-30 03:36:41 +0000318Once the interpreter is started, you type Python code at the
Fred Drakeb2d10062001-07-06 22:46:52 +0000319prompt. For example, on my Linux system, I type the three Python
320statements shown below, and get the output as shown, to find out my
321\filevar{prefix} and \filevar{exec-prefix}:
Fred Drake01df4532000-06-30 03:36:41 +0000322
Greg Wardc392caa2000-04-11 02:00:26 +0000323\begin{verbatim}
Andrew M. Kuchling67ca7032004-08-07 21:30:13 +0000324Python 2.4 (#26, Aug 7 2004, 17:19:02)
325Type "help", "copyright", "credits" or "license" for more information.
Greg Wardc392caa2000-04-11 02:00:26 +0000326>>> import sys
327>>> sys.prefix
328'/usr'
329>>> sys.exec_prefix
330'/usr'
331\end{verbatim}
332
Greg Ward7ef2ba72000-10-22 01:40:08 +0000333If you don't want to install modules to the standard location, or if you
334don't have permission to write there, then you need to read about
335alternate installations in section~\ref{alt-install}. If you want to
336customize your installation directories more heavily, see
337section~\ref{custom-install} on custom installations.
Greg Wardc392caa2000-04-11 02:00:26 +0000338
339
340% This rather nasty macro is used to generate the tables that describe
341% each installation scheme. It's nasty because it takes two arguments
342% for each "slot" in an installation scheme, there will soon be more
343% than five of these slots, and TeX has a limit of 10 arguments to a
344% macro. Uh-oh.
345
Greg Ward29576562000-03-18 15:11:50 +0000346\newcommand{\installscheme}[8]
Fred Drake629dd992003-07-02 14:33:11 +0000347 {\begin{tableiii}{l|l|l}{textrm}
Greg Ward29576562000-03-18 15:11:50 +0000348 {Type of file}
349 {Installation Directory}
350 {Override option}
351 \lineiii{pure module distribution}
352 {\filevar{#1}\filenq{#2}}
Greg Warda021aca2000-04-19 22:34:11 +0000353 {\longprogramopt{install-purelib}}
Greg Ward29576562000-03-18 15:11:50 +0000354 \lineiii{non-pure module distribution}
355 {\filevar{#3}\filenq{#4}}
Greg Warda021aca2000-04-19 22:34:11 +0000356 {\longprogramopt{install-platlib}}
Greg Ward29576562000-03-18 15:11:50 +0000357 \lineiii{scripts}
358 {\filevar{#5}\filenq{#6}}
Greg Warda021aca2000-04-19 22:34:11 +0000359 {\longprogramopt{install-scripts}}
Greg Ward29576562000-03-18 15:11:50 +0000360 \lineiii{data}
361 {\filevar{#7}\filenq{#8}}
Greg Warda021aca2000-04-19 22:34:11 +0000362 {\longprogramopt{install-data}}
Greg Ward29576562000-03-18 15:11:50 +0000363 \end{tableiii}}
Greg Ward7c1e5f62000-03-10 01:56:58 +0000364
Greg Ward0bc59532000-09-30 21:06:40 +0000365
Greg Ward29576562000-03-18 15:11:50 +0000366\section{Alternate Installation}
Greg Warde78298a2000-04-28 17:12:24 +0000367\label{alt-install}
Greg Ward7c1e5f62000-03-10 01:56:58 +0000368
Greg Ward29576562000-03-18 15:11:50 +0000369Often, it is necessary or desirable to install modules to a location
370other than the standard location for third-party Python modules. For
Fred Drakeeff9a872000-10-26 16:41:03 +0000371example, on a \UNIX{} system you might not have permission to write to the
Greg Ward29576562000-03-18 15:11:50 +0000372standard third-party module directory. Or you might wish to try out a
373module before making it a standard part of your local Python
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000374installation. This is especially true when upgrading a distribution
Greg Ward29576562000-03-18 15:11:50 +0000375already present: you want to make sure your existing base of scripts
376still works with the new version before actually upgrading.
377
378The Distutils \command{install} command is designed to make installing
379module distributions to an alternate location simple and painless. The
380basic idea is that you supply a base directory for the installation, and
381the \command{install} command picks a set of directories (called an
382\emph{installation scheme}) under this base directory in which to
383install files. The details differ across platforms, so read whichever
Andrew M. Kuchling30537da2001-02-17 00:42:56 +0000384of the following sections applies to you.
Greg Ward29576562000-03-18 15:11:50 +0000385
386
Fred Drakeec6229e2004-06-25 23:02:59 +0000387\subsection{Alternate installation: the home scheme}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000388\label{alt-install-prefix}
Greg Ward29576562000-03-18 15:11:50 +0000389
Greg Wardc392caa2000-04-11 02:00:26 +0000390The idea behind the ``home scheme'' is that you build and maintain a
Fred Drakeec6229e2004-06-25 23:02:59 +0000391personal stash of Python modules. This scheme's name is derived from
392the idea of a ``home'' directory on \UNIX, since it's not unusual for
393a \UNIX{} user to make their home directory have a layout similar to
394\file{/usr/} or \file{/usr/local/}. This scheme can be used by
395anyone, regardless of the operating system their installing for.
396
Greg Wardc392caa2000-04-11 02:00:26 +0000397Installing a new module distribution is as simple as
Fred Drakea9a83e92001-03-01 18:37:52 +0000398
Greg Ward29576562000-03-18 15:11:50 +0000399\begin{verbatim}
400python setup.py install --home=<dir>
401\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000402
Fred Drakeec6229e2004-06-25 23:02:59 +0000403where you can supply any directory you like for the
404\longprogramopt{home} option. On \UNIX, lazy typists can just type a
405tilde (\code{\textasciitilde}); the \command{install} command will
406expand this to your home directory:
Fred Drakea9a83e92001-03-01 18:37:52 +0000407
Greg Wardc392caa2000-04-11 02:00:26 +0000408\begin{verbatim}
409python setup.py install --home=~
410\end{verbatim}
Greg Ward29576562000-03-18 15:11:50 +0000411
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000412The \longprogramopt{home} option defines the installation base
413directory. Files are installed to the following directories under the
414installation base as follows:
Greg Ward29576562000-03-18 15:11:50 +0000415\installscheme{home}{/lib/python}
416 {home}{/lib/python}
417 {home}{/bin}
418 {home}{/share}
419
Fred Drakeec6229e2004-06-25 23:02:59 +0000420
421\versionchanged[The \longprogramopt{home} option used to be supported
422 only on \UNIX]{2.4}
423
424
Fred Drakeeff9a872000-10-26 16:41:03 +0000425\subsection{Alternate installation: \UNIX{} (the prefix scheme)}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000426\label{alt-install-home}
Greg Ward29576562000-03-18 15:11:50 +0000427
428The ``prefix scheme'' is useful when you wish to use one Python
429installation to perform the build/install (i.e., to run the setup
430script), but install modules into the third-party module directory of a
431different Python installation (or something that looks like a different
432Python installation). If this sounds a trifle unusual, it is---that's
433why the ``home scheme'' comes first. However, there are at least two
434known cases where the prefix scheme will be useful.
435
Greg Ward19c67f82000-06-24 01:33:16 +0000436First, consider that many Linux distributions put Python in \file{/usr},
Greg Ward29576562000-03-18 15:11:50 +0000437rather than the more traditional \file{/usr/local}. This is entirely
438appropriate, since in those cases Python is part of ``the system''
439rather than a local add-on. However, if you are installing Python
440modules from source, you probably want them to go in
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000441\file{/usr/local/lib/python2.\filevar{X}} rather than
442\file{/usr/lib/python2.\filevar{X}}. This can be done with
Fred Drakea9a83e92001-03-01 18:37:52 +0000443
Greg Ward29576562000-03-18 15:11:50 +0000444\begin{verbatim}
445/usr/bin/python setup.py install --prefix=/usr/local
446\end{verbatim}
447
448Another possibility is a network filesystem where the name used to write
449to a remote directory is different from the name used to read it: for
450example, the Python interpreter accessed as \file{/usr/local/bin/python}
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000451might search for modules in \file{/usr/local/lib/python2.\filevar{X}},
Greg Ward29576562000-03-18 15:11:50 +0000452but those modules would have to be installed to, say,
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000453\file{/mnt/\filevar{@server}/export/lib/python2.\filevar{X}}. This
Greg Ward29576562000-03-18 15:11:50 +0000454could be done with
Fred Drakea9a83e92001-03-01 18:37:52 +0000455
Greg Ward29576562000-03-18 15:11:50 +0000456\begin{verbatim}
457/usr/local/bin/python setup.py install --prefix=/mnt/@server/export
458\end{verbatim}
459
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000460In either case, the \longprogramopt{prefix} option defines the
461installation base, and the \longprogramopt{exec-prefix} option defines
462the platform-specific installation base, which is used for
463platform-specific files. (Currently, this just means non-pure module
464distributions, but could be expanded to C libraries, binary executables,
465etc.) If \longprogramopt{exec-prefix} is not supplied, it defaults to
466\longprogramopt{prefix}. Files are installed as follows:
Greg Ward29576562000-03-18 15:11:50 +0000467
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000468\installscheme{prefix}{/lib/python2.\filevar{X}/site-packages}
469 {exec-prefix}{/lib/python2.\filevar{X}/site-packages}
Greg Ward29576562000-03-18 15:11:50 +0000470 {prefix}{/bin}
471 {prefix}{/share}
472
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000473There is no requirement that \longprogramopt{prefix} or
474\longprogramopt{exec-prefix} actually point to an alternate Python
475installation; if the directories listed above do not already exist, they
476are created at installation time.
Greg Ward29576562000-03-18 15:11:50 +0000477
478Incidentally, the real reason the prefix scheme is important is simply
Fred Drakeeff9a872000-10-26 16:41:03 +0000479that a standard \UNIX{} installation uses the prefix scheme, but with
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000480\longprogramopt{prefix} and \longprogramopt{exec-prefix} supplied by
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000481Python itself as \code{sys.prefix} and \code{sys.exec\_prefix}. Thus,
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000482you might think you'll never use the prefix scheme, but every time you
483run \code{python setup.py install} without any other options, you're
484using it.
Greg Ward29576562000-03-18 15:11:50 +0000485
486Note that installing extensions to an alternate Python installation has
487no effect on how those extensions are built: in particular, the Python
488header files (\file{Python.h} and friends) installed with the Python
489interpreter used to run the setup script will be used in compiling
490extensions. It is your responsibility to ensure that the interpreter
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000491used to run extensions installed in this way is compatible with the
Greg Wardc392caa2000-04-11 02:00:26 +0000492interpreter used to build them. The best way to do this is to ensure
493that the two interpreters are the same version of Python (possibly
494different builds, or possibly copies of the same build). (Of course, if
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000495your \longprogramopt{prefix} and \longprogramopt{exec-prefix} don't even
496point to an alternate Python installation, this is immaterial.)
Greg Ward29576562000-03-18 15:11:50 +0000497
498
Fred Drakeec6229e2004-06-25 23:02:59 +0000499\subsection{Alternate installation: Windows (the prefix scheme)}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000500\label{alt-install-windows}
Greg Ward29576562000-03-18 15:11:50 +0000501
Fred Drakeec6229e2004-06-25 23:02:59 +0000502Windows has no concept of a user's home directory, and since the
503standard Python installation under Windows is simpler than under
504\UNIX, the \longprogramopt{prefix} option has traditionally been used
505to install additional packages in separate locations on Windows.
Fred Drakea9a83e92001-03-01 18:37:52 +0000506
Greg Ward29576562000-03-18 15:11:50 +0000507\begin{verbatim}
Greg Ward8e14f052000-03-22 01:00:23 +0000508python setup.py install --prefix="\Temp\Python"
Greg Ward29576562000-03-18 15:11:50 +0000509\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000510
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000511to install modules to the
512\file{\textbackslash{}Temp\textbackslash{}Python} directory on the
513current drive.
Greg Ward29576562000-03-18 15:11:50 +0000514
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000515The installation base is defined by the \longprogramopt{prefix} option;
516the \longprogramopt{exec-prefix} option is not supported under Windows.
517Files are installed as follows:
Greg Ward29576562000-03-18 15:11:50 +0000518\installscheme{prefix}{}
519 {prefix}{}
Greg Ward4756e5f2000-04-19 22:40:12 +0000520 {prefix}{\textbackslash{}Scripts}
521 {prefix}{\textbackslash{}Data}
Greg Ward29576562000-03-18 15:11:50 +0000522
523
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000524\subsection{Alternate installation: Mac OS 9}
Greg Ward1ed49ee2000-09-13 00:00:58 +0000525\label{alt-install-macos}
Greg Ward29576562000-03-18 15:11:50 +0000526
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000527% XXX Mac OS X?
528
Fred Drake74f1a562001-09-25 15:12:41 +0000529Like Windows, Mac OS has no notion of home directories (or even of
Greg Ward29576562000-03-18 15:11:50 +0000530users), and a fairly simple standard Python installation. Thus, only a
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000531\longprogramopt{prefix} option is needed. It defines the installation
532base, and files are installed under it as follows:
Greg Ward29576562000-03-18 15:11:50 +0000533
Greg Ward8c562592000-09-13 00:12:37 +0000534\installscheme{prefix}{:Lib:site-packages}
535 {prefix}{:Lib:site-packages}
Greg Ward8e14f052000-03-22 01:00:23 +0000536 {prefix}{:Scripts}
537 {prefix}{:Data}
Greg Ward29576562000-03-18 15:11:50 +0000538
Greg Ward8c562592000-09-13 00:12:37 +0000539See section~\ref{platform-variations} for information on supplying
540command-line arguments to the setup script with MacPython.
Greg Ward29576562000-03-18 15:11:50 +0000541
542
543\section{Custom Installation}
Greg Warde78298a2000-04-28 17:12:24 +0000544\label{custom-install}
Greg Ward29576562000-03-18 15:11:50 +0000545
546Sometimes, the alternate installation schemes described in
Greg Warde78298a2000-04-28 17:12:24 +0000547section~\ref{alt-install} just don't do what you want. You might
Greg Ward29576562000-03-18 15:11:50 +0000548want to tweak just one or two directories while keeping everything under
549the same base directory, or you might want to completely redefine the
550installation scheme. In either case, you're creating a \emph{custom
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000551installation scheme}.
Greg Ward29576562000-03-18 15:11:50 +0000552
553You probably noticed the column of ``override options'' in the tables
554describing the alternate installation schemes above. Those options are
555how you define a custom installation scheme. These override options can
556be relative, absolute, or explicitly defined in terms of one of the
557installation base directories. (There are two installation base
558directories, and they are normally the same---they only differ when you
Fred Drakeeff9a872000-10-26 16:41:03 +0000559use the \UNIX{} ``prefix scheme'' and supply different
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000560\longprogramopt{prefix} and \longprogramopt{exec-prefix} options.)
Greg Ward29576562000-03-18 15:11:50 +0000561
562For example, say you're installing a module distribution to your home
Fred Drakeeff9a872000-10-26 16:41:03 +0000563directory under \UNIX---but you want scripts to go in
Greg Ward4eaa3bf2000-04-19 22:44:25 +0000564\file{\textasciitilde/scripts} rather than \file{\textasciitilde/bin}.
565As you might expect, you can override this directory with the
566\longprogramopt{install-scripts} option; in this case, it makes most
567sense to supply a relative path, which will be interpreted relative to
568the installation base directory (your home directory, in this case):
Fred Drakea9a83e92001-03-01 18:37:52 +0000569
Greg Ward29576562000-03-18 15:11:50 +0000570\begin{verbatim}
Greg Ward19c67f82000-06-24 01:33:16 +0000571python setup.py install --home=~ --install-scripts=scripts
Greg Ward29576562000-03-18 15:11:50 +0000572\end{verbatim}
573
Fred Drakeeff9a872000-10-26 16:41:03 +0000574Another \UNIX{} example: suppose your Python installation was built and
Greg Ward29576562000-03-18 15:11:50 +0000575installed with a prefix of \file{/usr/local/python}, so under a standard
576installation scripts will wind up in \file{/usr/local/python/bin}. If
577you want them in \file{/usr/local/bin} instead, you would supply this
Greg Warda021aca2000-04-19 22:34:11 +0000578absolute directory for the \longprogramopt{install-scripts} option:
Fred Drakea9a83e92001-03-01 18:37:52 +0000579
Greg Ward29576562000-03-18 15:11:50 +0000580\begin{verbatim}
581python setup.py install --install-scripts=/usr/local/bin
582\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000583
Greg Ward29576562000-03-18 15:11:50 +0000584(This performs an installation using the ``prefix scheme,'' where the
585prefix is whatever your Python interpreter was installed with---
586\file{/usr/local/python} in this case.)
587
588If you maintain Python on Windows, you might want third-party modules to
589live in a subdirectory of \filevar{prefix}, rather than right in
590\filevar{prefix} itself. This is almost as easy as customizing the
591script installation directory---you just have to remember that there are
592two types of modules to worry about, pure modules and non-pure modules
593(i.e., modules from a non-pure distribution). For example:
Fred Drakea9a83e92001-03-01 18:37:52 +0000594
Greg Ward29576562000-03-18 15:11:50 +0000595\begin{verbatim}
596python setup.py install --install-purelib=Site --install-platlib=Site
597\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000598
Andrew M. Kuchling3a7f4052002-11-15 02:52:44 +0000599The specified installation directories are relative to
600\filevar{prefix}. Of course, you also have to ensure that these
601directories are in Python's module search path, such as by putting a
602\file{.pth} file in \filevar{prefix}. See section~\ref{search-path}
603to find out how to modify Python's search path.
Greg Ward29576562000-03-18 15:11:50 +0000604
605If you want to define an entire installation scheme, you just have to
606supply all of the installation directory options. The recommended way
Greg Wardc392caa2000-04-11 02:00:26 +0000607to do this is to supply relative paths; for example, if you want to
608maintain all Python module-related files under \file{python} in your
609home directory, and you want a separate directory for each platform that
610you use your home directory from, you might define the following
Greg Ward29576562000-03-18 15:11:50 +0000611installation scheme:
Fred Drakea9a83e92001-03-01 18:37:52 +0000612
Greg Ward29576562000-03-18 15:11:50 +0000613\begin{verbatim}
Greg Wardc392caa2000-04-11 02:00:26 +0000614python setup.py install --home=~ \
Greg Ward29576562000-03-18 15:11:50 +0000615 --install-purelib=python/lib \
616 --install-platlib=python/lib.$PLAT \
617 --install-scripts=python/scripts
618 --install-data=python/data
619\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000620% $ % -- bow to font-lock
621
Greg Ward29576562000-03-18 15:11:50 +0000622or, equivalently,
Fred Drakea9a83e92001-03-01 18:37:52 +0000623
Greg Ward29576562000-03-18 15:11:50 +0000624\begin{verbatim}
625python setup.py install --home=~/python \
626 --install-purelib=lib \
Greg Ward19c67f82000-06-24 01:33:16 +0000627 --install-platlib='lib.$PLAT' \
Greg Ward29576562000-03-18 15:11:50 +0000628 --install-scripts=scripts
629 --install-data=data
630\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000631% $ % -- bow to font-lock
632
Greg Ward29576562000-03-18 15:11:50 +0000633\code{\$PLAT} is not (necessarily) an environment variable---it will be
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000634expanded by the Distutils as it parses your command line options, just
635as it does when parsing your configuration file(s).
Greg Ward29576562000-03-18 15:11:50 +0000636
637Obviously, specifying the entire installation scheme every time you
638install a new module distribution would be very tedious. Thus, you can
639put these options into your Distutils config file (see
Greg Warde78298a2000-04-28 17:12:24 +0000640section~\ref{config-files}):
Fred Drakea9a83e92001-03-01 18:37:52 +0000641
Greg Ward169f91b2000-03-10 01:57:51 +0000642\begin{verbatim}
643[install]
Greg Ward29576562000-03-18 15:11:50 +0000644install-base=$HOME
645install-purelib=python/lib
646install-platlib=python/lib.$PLAT
647install-scripts=python/scripts
648install-data=python/data
Greg Ward169f91b2000-03-10 01:57:51 +0000649\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000650
Greg Ward29576562000-03-18 15:11:50 +0000651or, equivalently,
Fred Drakea9a83e92001-03-01 18:37:52 +0000652
Greg Ward169f91b2000-03-10 01:57:51 +0000653\begin{verbatim}
654[install]
Greg Ward29576562000-03-18 15:11:50 +0000655install-base=$HOME/python
656install-purelib=lib
657install-platlib=lib.$PLAT
658install-scripts=scripts
659install-data=data
Greg Ward169f91b2000-03-10 01:57:51 +0000660\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000661
Greg Ward29576562000-03-18 15:11:50 +0000662Note that these two are \emph{not} equivalent if you supply a different
663installation base directory when you run the setup script. For example,
Fred Drakea9a83e92001-03-01 18:37:52 +0000664
Greg Ward7c1e5f62000-03-10 01:56:58 +0000665\begin{verbatim}
Greg Ward29576562000-03-18 15:11:50 +0000666python setup.py --install-base=/tmp
Greg Ward7c1e5f62000-03-10 01:56:58 +0000667\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000668
Greg Ward29576562000-03-18 15:11:50 +0000669would install pure modules to \filevar{/tmp/python/lib} in the first
670case, and to \filevar{/tmp/lib} in the second case. (For the second
671case, you probably want to supply an installation base of
672\file{/tmp/python}.)
Greg Ward169f91b2000-03-10 01:57:51 +0000673
Greg Ward29576562000-03-18 15:11:50 +0000674You probably noticed the use of \code{\$HOME} and \code{\$PLAT} in the
675sample configuration file input. These are Distutils configuration
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000676variables, which bear a strong resemblance to environment variables.
677In fact, you can use environment variables in config files on
678platforms that have such a notion but the Distutils additionally
679define a few extra variables that may not be in your environment, such
680as \code{\$PLAT}. (And of course, on systems that don't have
Andrew M. Kuchlingd680a862002-11-27 13:34:20 +0000681environment variables, such as Mac OS 9, the configuration
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000682variables supplied by the Distutils are the only ones you can use.)
683See section~\ref{config-files} for details.
Greg Ward7c1e5f62000-03-10 01:56:58 +0000684
Andrew M. Kuchling0cc8c372002-05-24 17:06:17 +0000685% XXX need some Windows and Mac OS examples---when would custom
686% installation schemes be needed on those platforms?
Greg Ward7c1e5f62000-03-10 01:56:58 +0000687
Greg Ward7c1e5f62000-03-10 01:56:58 +0000688
Andrew M. Kuchling3a7f4052002-11-15 02:52:44 +0000689% XXX I'm not sure where this section should go.
690\subsection{Modifying Python's Search Path}
691\label{search-path}
692
693When the Python interpreter executes an \keyword{import} statement, it
694searches for both Python code and extension modules along a search
695path. A default value for the path is configured into the Python
696binary when the interpreter is built. You can determine the path by
697importing the \module{sys} module and printing the value of
698\code{sys.path}.
699
700\begin{verbatim}
701$ python
702Python 2.2 (#11, Oct 3 2002, 13:31:27)
703[GCC 2.96 20000731 (Red Hat Linux 7.3 2.96-112)] on linux2
704Type ``help'', ``copyright'', ``credits'' or ``license'' for more information.
705>>> import sys
706>>> sys.path
707['', '/usr/local/lib/python2.3', '/usr/local/lib/python2.3/plat-linux2',
708 '/usr/local/lib/python2.3/lib-tk', '/usr/local/lib/python2.3/lib-dynload',
709 '/usr/local/lib/python2.3/site-packages']
710>>>
Fred Drake2884d6d2003-07-02 12:27:43 +0000711\end{verbatim} % $ <-- bow to font-lock
Andrew M. Kuchling3a7f4052002-11-15 02:52:44 +0000712
713The null string in \code{sys.path} represents the current working
714directory.
715
716The expected convention for locally installed packages is to put them
717in the \file{.../site-packages/} directory, but you may want to
718install Python modules into some arbitrary directory. For example,
719your site may have a convention of keeping all software related to the
720web server under \file{/www}. Add-on Python modules might then belong
721in \file{/www/python}, and in order to import them, this directory
722must be added to \code{sys.path}. There are several different ways to
723add the directory.
724
725The most convenient way is to add a path configuration file to a
726directory that's already on Python's path, usually to the
727\file{.../site-packages/} directory. Path configuration files have an
728extension of \file{.pth}, and each line must contain a single path
Andrew M. Kuchling1a54d712002-11-25 13:56:12 +0000729that will be appended to \code{sys.path}. (Because the new paths are
730appended to \code{sys.path}, modules in the added directories will not
731override standard modules. This means you can't use this mechanism
732for installing fixed versions of standard modules.)
733
734Paths can be absolute or relative, in which case they're relative to
735the directory containing the \file{.pth} file. Any directories added
736to the search path will be scanned in turn for \file{.pth} files. See
Raymond Hettinger682be222004-07-10 11:11:15 +0000737\citetitle[http://www.python.org/dev/doc/devel/lib/module-site.html]
738{site module documentation} for more information.
Andrew M. Kuchling3a7f4052002-11-15 02:52:44 +0000739
740A slightly less convenient way is to edit the \file{site.py} file in
741Python's standard library, and modify \code{sys.path}. \file{site.py}
742is automatically imported when the Python interpreter is executed,
743unless the \programopt{-S} switch is supplied to suppress this
744behaviour. So you could simply edit \file{site.py} and add two lines to it:
745
746\begin{verbatim}
747import sys
748sys.path.append('/www/python/')
749\end{verbatim}
750
751However, if you reinstall the same major version of Python (perhaps
752when upgrading from 2.2 to 2.2.2, for example) \file{site.py} will be
753overwritten by the stock version. You'd have to remember that it was
754modified and save a copy before doing the installation.
755
756There are two environment variables that can modify \code{sys.path}.
757\envvar{PYTHONHOME} sets an alternate value for the prefix of the
758Python installation. For example, if \envvar{PYTHONHOME} is set to
759\samp{/www/python}, the search path will be set to \code{['',
760'/www/python/lib/python2.2/', '/www/python/lib/python2.3/plat-linux2',
761...]}.
762
763The \envvar{PYTHONPATH} variable can be set to a list of paths that
764will be added to the beginning of \code{sys.path}. For example, if
765\envvar{PYTHONPATH} is set to \samp{/www/python:/opt/py}, the search
766path will begin with \code{['/www/python', '/opt/py']}. (Note that
767directories must exist in order to be added to \code{sys.path}; the
768\module{site} module removes paths that don't exist.)
769
770Finally, \code{sys.path} is just a regular Python list, so any Python
771application can modify it by adding or removing entries.
772
773
Greg Ward6002ffc2000-04-09 20:54:50 +0000774\section{Distutils Configuration Files}
Greg Warde78298a2000-04-28 17:12:24 +0000775\label{config-files}
Greg Ward7c1e5f62000-03-10 01:56:58 +0000776
Greg Ward7ef2ba72000-10-22 01:40:08 +0000777As mentioned above, you can use Distutils configuration files to record
778personal or site preferences for any Distutils options. That is, any
779option to any command can be stored in one of two or three (depending on
780your platform) configuration files, which will be consulted before the
781command-line is parsed. This means that configuration files will
782override default values, and the command-line will in turn override
783configuration files. Furthermore, if multiple configuration files
784apply, values from ``earlier'' files are overridden by ``later'' files.
785
786
787\subsection{Location and names of config files}
Fred Drake0bbaa512001-01-24 16:39:35 +0000788\label{config-filenames}
Greg Ward7ef2ba72000-10-22 01:40:08 +0000789
790The names and locations of the configuration files vary slightly across
Fred Drakeeff9a872000-10-26 16:41:03 +0000791platforms. On \UNIX, the three configuration files (in the order they
Greg Ward7ef2ba72000-10-22 01:40:08 +0000792are processed) are:
793\begin{tableiii}{l|l|c}{textrm}
794 {Type of file}{Location and filename}{Notes}
Andrew M. Kuchling22d35a72001-12-06 16:34:53 +0000795 \lineiii{system}{\filenq{\filevar{prefix}/lib/python\filevar{ver}/distutils/distutils.cfg}}{(1)}
Greg Ward7ef2ba72000-10-22 01:40:08 +0000796 \lineiii{personal}{\filenq{\$HOME/.pydistutils.cfg}}{(2)}
797 \lineiii{local}{\filenq{setup.cfg}}{(3)}
798\end{tableiii}
799
800On Windows, the configuration files are:
801\begin{tableiii}{l|l|c}{textrm}
802 {Type of file}{Location and filename}{Notes}
Andrew M. Kuchling22d35a72001-12-06 16:34:53 +0000803 \lineiii{system}{\filenq{\filevar{prefix}\textbackslash{}Lib\textbackslash{}distutils\textbackslash{}distutils.cfg}}{(4)}
Fred Drake8612a432002-10-31 20:46:20 +0000804 \lineiii{personal}{\filenq{\%HOME\%\textbackslash{}pydistutils.cfg}}{(5)}
Greg Ward7ef2ba72000-10-22 01:40:08 +0000805 \lineiii{local}{\filenq{setup.cfg}}{(3)}
806\end{tableiii}
807
Fred Drake74f1a562001-09-25 15:12:41 +0000808And on Mac OS, they are:
Greg Ward7ef2ba72000-10-22 01:40:08 +0000809\begin{tableiii}{l|l|c}{textrm}
810 {Type of file}{Location and filename}{Notes}
Andrew M. Kuchling22d35a72001-12-06 16:34:53 +0000811 \lineiii{system}{\filenq{\filevar{prefix}:Lib:distutils:distutils.cfg}}{(6)}
Greg Ward7ef2ba72000-10-22 01:40:08 +0000812 \lineiii{personal}{N/A}{}
813 \lineiii{local}{\filenq{setup.cfg}}{(3)}
814\end{tableiii}
815
816\noindent Notes:
817\begin{description}
818\item[(1)] Strictly speaking, the system-wide configuration file lives
819 in the directory where the Distutils are installed; under Python 1.6
Fred Drakeeff9a872000-10-26 16:41:03 +0000820 and later on \UNIX, this is as shown. For Python 1.5.2, the Distutils
Greg Ward7ef2ba72000-10-22 01:40:08 +0000821 will normally be installed to
Greg Ward48923812003-08-23 02:09:18 +0000822 \file{\filevar{prefix}/lib/python1.5/site-packages/distutils},
Greg Ward7ef2ba72000-10-22 01:40:08 +0000823 so the system configuration file should be put there under Python
824 1.5.2.
Fred Drakeeff9a872000-10-26 16:41:03 +0000825\item[(2)] On \UNIX, if the \envvar{HOME} environment variable is not
Greg Ward7ef2ba72000-10-22 01:40:08 +0000826 defined, the user's home directory will be determined with the
Fred Drake8612a432002-10-31 20:46:20 +0000827 \function{getpwuid()} function from the standard
828 \ulink{\module{pwd}}{../lib/module-pwd.html} module.
Greg Ward7ef2ba72000-10-22 01:40:08 +0000829\item[(3)] I.e., in the current directory (usually the location of the
830 setup script).
831\item[(4)] (See also note (1).) Under Python 1.6 and later, Python's
832 default ``installation prefix'' is \file{C:\textbackslash{}Python}, so
833 the system configuration file is normally
Andrew M. Kuchling22d35a72001-12-06 16:34:53 +0000834 \file{C:\textbackslash{}Python\textbackslash{}Lib\textbackslash{}distutils\textbackslash{}distutils.cfg}.
Greg Ward7ef2ba72000-10-22 01:40:08 +0000835 Under Python 1.5.2, the default prefix was
836 \file{C:\textbackslash{}Program~Files\textbackslash{}Python}, and the
837 Distutils were not part of the standard library---so the system
838 configuration file would be
Andrew M. Kuchling22d35a72001-12-06 16:34:53 +0000839 \file{C:\textbackslash{}Program~Files\textbackslash{}Python\textbackslash{}distutils\textbackslash{}distutils.cfg}
Greg Ward7ef2ba72000-10-22 01:40:08 +0000840 in a standard Python 1.5.2 installation under Windows.
841\item[(5)] On Windows, if the \envvar{HOME} environment variable is not
842 defined, no personal configuration file will be found or used. (In
843 other words, the Distutils make no attempt to guess your home
844 directory on Windows.)
845\item[(6)] (See also notes (1) and (4).) The default installation
846 prefix is just \file{Python:}, so under Python 1.6 and later this is
Andrew M. Kuchling0cc8c372002-05-24 17:06:17 +0000847 normally\file{Python:Lib:distutils:distutils.cfg}.
Greg Ward7ef2ba72000-10-22 01:40:08 +0000848\end{description}
849
850
851\subsection{Syntax of config files}
Fred Drake0bbaa512001-01-24 16:39:35 +0000852\label{config-syntax}
Greg Ward7ef2ba72000-10-22 01:40:08 +0000853
854The Distutils configuration files all have the same syntax. The config
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000855files are grouped into sections. There is one section for each Distutils
Greg Ward7ef2ba72000-10-22 01:40:08 +0000856command, plus a \code{global} section for global options that affect
857every command. Each section consists of one option per line, specified
Andrew M. Kuchling3b98dc12002-05-07 21:02:35 +0000858as \code{option=value}.
Greg Ward7ef2ba72000-10-22 01:40:08 +0000859
860For example, the following is a complete config file that just forces
861all commands to run quietly by default:
Fred Drakea9a83e92001-03-01 18:37:52 +0000862
Greg Ward7ef2ba72000-10-22 01:40:08 +0000863\begin{verbatim}
864[global]
865verbose=0
866\end{verbatim}
867
868If this is installed as the system config file, it will affect all
869processing of any Python module distribution by any user on the current
870system. If it is installed as your personal config file (on systems
871that support them), it will affect only module distributions processed
872by you. And if it is used as the \file{setup.cfg} for a particular
873module distribution, it affects only that distribution.
874
875You could override the default ``build base'' directory and make the
876\command{build*} commands always forcibly rebuild all files with the
877following:
Fred Drakea9a83e92001-03-01 18:37:52 +0000878
Greg Ward7ef2ba72000-10-22 01:40:08 +0000879\begin{verbatim}
880[build]
881build-base=blib
882force=1
883\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000884
Greg Ward7ef2ba72000-10-22 01:40:08 +0000885which corresponds to the command-line arguments
Fred Drakea9a83e92001-03-01 18:37:52 +0000886
Greg Ward7ef2ba72000-10-22 01:40:08 +0000887\begin{verbatim}
888python setup.py build --build-base=blib --force
889\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000890
Greg Ward7ef2ba72000-10-22 01:40:08 +0000891except that including the \command{build} command on the command-line
892means that command will be run. Including a particular command in
893config files has no such implication; it only means that if the command
894is run, the options in the config file will apply. (Or if other
895commands that derive values from it are run, they will use the values in
896the config file.)
897
898You can find out the complete list of options for any command using the
899\longprogramopt{help} option, e.g.:
Fred Drakea9a83e92001-03-01 18:37:52 +0000900
Greg Ward7ef2ba72000-10-22 01:40:08 +0000901\begin{verbatim}
902python setup.py build --help
903\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000904
Greg Ward7ef2ba72000-10-22 01:40:08 +0000905and you can find out the complete list of global options by using
906\longprogramopt{help} without a command:
Fred Drakea9a83e92001-03-01 18:37:52 +0000907
Greg Ward7ef2ba72000-10-22 01:40:08 +0000908\begin{verbatim}
909python setup.py --help
910\end{verbatim}
Fred Drakea9a83e92001-03-01 18:37:52 +0000911
Greg Ward7ef2ba72000-10-22 01:40:08 +0000912See also the ``Reference'' section of the ``Distributing Python
913Modules'' manual.
914
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +0000915\section{Building Extensions: Tips and Tricks}
916\label{building-ext}
917
918Whenever possible, the Distutils try to use the configuration
919information made available by the Python interpreter used to run the
920\file{setup.py} script. For example, the same compiler and linker
921flags used to compile Python will also be used for compiling
922extensions. Usually this will work well, but in complicated
923situations this might be inappropriate. This section discusses how to
924override the usual Distutils behaviour.
925
926\subsection{Tweaking compiler/linker flags}
927\label{tweak-flags}
928
Raymond Hettinger682be222004-07-10 11:11:15 +0000929Compiling a Python extension written in C or \Cpp{} will sometimes
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +0000930require specifying custom flags for the compiler and linker in order
931to use a particular library or produce a special kind of object code.
932This is especially true if the extension hasn't been tested on your
933platform, or if you're trying to cross-compile Python.
934
935In the most general case, the extension author might have foreseen
936that compiling the extensions would be complicated, and provided a
937\file{Setup} file for you to edit. This will likely only be done if
938the module distribution contains many separate extension modules, or
939if they often require elaborate sets of compiler flags in order to work.
940
941A \file{Setup} file, if present, is parsed in order to get a list of
942extensions to build. Each line in a \file{Setup} describes a single
943module. Lines have the following structure:
944
Fred Drake8612a432002-10-31 20:46:20 +0000945\begin{alltt}
946\var{module} ... [\var{sourcefile} ...] [\var{cpparg} ...] [\var{library} ...]
947\end{alltt}
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +0000948
949Let's examine each of the fields in turn.
950
951\begin{itemize}
952
953\item \var{module} is the name of the extension module to be built,
Fred Drake8612a432002-10-31 20:46:20 +0000954 and should be a valid Python identifier. You can't just change
955 this in order to rename a module (edits to the source code would
956 also be needed), so this should be left alone.
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +0000957
958\item \var{sourcefile} is anything that's likely to be a source code
Fred Drake8612a432002-10-31 20:46:20 +0000959 file, at least judging by the filename. Filenames ending in
960 \file{.c} are assumed to be written in C, filenames ending in
961 \file{.C}, \file{.cc}, and \file{.c++} are assumed to be
962 \Cpp, and filenames ending in \file{.m} or \file{.mm} are
963 assumed to be in Objective C.
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +0000964
965\item \var{cpparg} is an argument for the C preprocessor,
Fred Drake8612a432002-10-31 20:46:20 +0000966 and is anything starting with \programopt{-I}, \programopt{-D},
967 \programopt{-U} or \programopt{-C}.
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +0000968
Fred Drake8612a432002-10-31 20:46:20 +0000969\item \var{library} is anything ending in \file{.a} or beginning with
970 \programopt{-l} or \programopt{-L}.
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +0000971\end{itemize}
972
973If a particular platform requires a special library on your platform,
974you can add it by editing the \file{Setup} file and running
975\code{python setup.py build}. For example, if the module defined by the line
976
977\begin{verbatim}
978foo foomodule.c
979\end{verbatim}
980
981must be linked with the math library \file{libm.a} on your platform,
Fred Drake8612a432002-10-31 20:46:20 +0000982simply add \programopt{-lm} to the line:
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +0000983
984\begin{verbatim}
985foo foomodule.c -lm
986\end{verbatim}
987
988Arbitrary switches intended for the compiler or the linker can be
Fred Drake8612a432002-10-31 20:46:20 +0000989supplied with the \programopt{-Xcompiler} \var{arg} and
990\programopt{-Xlinker} \var{arg} options:
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +0000991
992\begin{verbatim}
993foo foomodule.c -Xcompiler -o32 -Xlinker -shared -lm
994\end{verbatim}
995
Fred Drake8612a432002-10-31 20:46:20 +0000996The next option after \programopt{-Xcompiler} and
997\programopt{-Xlinker} will be appended to the proper command line, so
998in the above example the compiler will be passed the \programopt{-o32}
999option, and the linker will be passed \programopt{-shared}. If a
1000compiler option requires an argument, you'll have to supply multiple
1001\programopt{-Xcompiler} options; for example, to pass \code{-x c++} the
1002\file{Setup} file would have to contain
1003\code{-Xcompiler -x -Xcompiler c++}.
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001004
1005Compiler flags can also be supplied through setting the
1006\envvar{CFLAGS} environment variable. If set, the contents of
1007\envvar{CFLAGS} will be added to the compiler flags specified in the
1008\file{Setup} file.
1009
1010
1011\subsection{Using non-Microsoft compilers on Windows \label{non-ms-compilers}}
1012\sectionauthor{Rene Liebscher}{R.Liebscher@gmx.de}
1013
Fred Drake2884d6d2003-07-02 12:27:43 +00001014\subsubsection{Borland \Cpp}
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001015
1016This subsection describes the necessary steps to use Distutils with the
1017Borland \Cpp{} compiler version 5.5.
1018%Should we mention that users have to create cfg-files for the compiler?
1019%see also http://community.borland.com/article/0,1410,21205,00.html
1020
1021First you have to know that Borland's object file format (OMF) is
1022different from the format used by the Python version you can download
1023from the Python or ActiveState Web site. (Python is built with
1024Microsoft Visual \Cpp, which uses COFF as the object file format.)
1025For this reason you have to convert Python's library
Andrew M. Kuchling67ca7032004-08-07 21:30:13 +00001026\file{python24.lib} into the Borland format. You can do this as
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001027follows:
1028
1029\begin{verbatim}
Andrew M. Kuchling67ca7032004-08-07 21:30:13 +00001030coff2omf python24.lib python24_bcpp.lib
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001031\end{verbatim}
1032
1033The \file{coff2omf} program comes with the Borland compiler. The file
Andrew M. Kuchling67ca7032004-08-07 21:30:13 +00001034\file{python24.lib} is in the \file{Libs} directory of your Python
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001035installation. If your extension uses other libraries (zlib,...) you
1036have to convert them too.
1037
1038The converted files have to reside in the same directories as the
1039normal libraries.
1040
1041How does Distutils manage to use these libraries with their changed
1042names? If the extension needs a library (eg. \file{foo}) Distutils
1043checks first if it finds a library with suffix \file{_bcpp}
1044(eg. \file{foo_bcpp.lib}) and then uses this library. In the case it
1045doesn't find such a special library it uses the default name
1046(\file{foo.lib}.)\footnote{This also means you could replace all
1047existing COFF-libraries with OMF-libraries of the same name.}
1048
1049To let Distutils compile your extension with Borland \Cpp{} you now have
1050to type:
1051
1052\begin{verbatim}
1053python setup.py build --compiler=bcpp
1054\end{verbatim}
1055
1056If you want to use the Borland \Cpp{} compiler as the default, you
1057could specify this in your personal or system-wide configuration file
1058for Distutils (see section~\ref{config-files}.)
1059
1060\begin{seealso}
1061 \seetitle[http://www.borland.com/bcppbuilder/freecompiler/]
1062 {\Cpp{}Builder Compiler}
1063 {Information about the free \Cpp{} compiler from Borland,
1064 including links to the download pages.}
1065
Fred Drakeddc369a2002-10-18 16:33:30 +00001066 \seetitle[http://www.cyberus.ca/\~{}g_will/pyExtenDL.shtml]
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001067 {Creating Python Extensions Using Borland's Free Compiler}
Fred Drake2884d6d2003-07-02 12:27:43 +00001068 {Document describing how to use Borland's free command-line \Cpp
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001069 compiler to build Python.}
1070\end{seealso}
1071
1072
Andrew M. Kuchling572aae32002-11-06 14:34:50 +00001073\subsubsection{GNU C / Cygwin / MinGW}
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001074
1075This section describes the necessary steps to use Distutils with the
Andrew M. Kuchling572aae32002-11-06 14:34:50 +00001076GNU C/\Cpp{} compilers in their Cygwin and MinGW
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001077distributions.\footnote{Check
1078\url{http://sources.redhat.com/cygwin/} and
1079\url{http://www.mingw.org/} for more information}
Andrew M. Kuchling572aae32002-11-06 14:34:50 +00001080For a Python interpreter that was built with Cygwin, everything should
1081work without any of these following steps.
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001082
Andrew M. Kuchling572aae32002-11-06 14:34:50 +00001083These compilers require some special libraries.
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001084This task is more complex than for Borland's \Cpp, because there is no
1085program to convert the library.
1086% I don't understand what the next line means. --amk
1087% (inclusive the references on data structures.)
1088
1089First you have to create a list of symbols which the Python DLL exports.
1090(You can find a good program for this task at
1091\url{http://starship.python.net/crew/kernr/mingw32/Notes.html}, see at
1092PExports 0.42h there.)
1093
1094\begin{verbatim}
Andrew M. Kuchling67ca7032004-08-07 21:30:13 +00001095pexports python24.dll >python24.def
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001096\end{verbatim}
1097
1098Then you can create from these information an import library for gcc.
1099
1100\begin{verbatim}
Andrew M. Kuchling67ca7032004-08-07 21:30:13 +00001101dlltool --dllname python24.dll --def python24.def --output-lib libpython24.a
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001102\end{verbatim}
1103
1104The resulting library has to be placed in the same directory as
Andrew M. Kuchling67ca7032004-08-07 21:30:13 +00001105\file{python24.lib}. (Should be the \file{libs} directory under your
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001106Python installation directory.)
1107
1108If your extension uses other libraries (zlib,...) you might
1109have to convert them too.
1110The converted files have to reside in the same directories as the normal
1111libraries do.
1112
1113To let Distutils compile your extension with Cygwin you now have to type
1114
1115\begin{verbatim}
1116python setup.py build --compiler=cygwin
1117\end{verbatim}
1118
1119and for Cygwin in no-cygwin mode\footnote{Then you have no
1120\POSIX{} emulation available, but you also don't need
Andrew M. Kuchling572aae32002-11-06 14:34:50 +00001121\file{cygwin1.dll}.} or for MinGW type:
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001122
1123\begin{verbatim}
1124python setup.py build --compiler=mingw32
1125\end{verbatim}
1126
1127If you want to use any of these options/compilers as default, you should
1128consider to write it in your personal or system-wide configuration file
1129for Distutils (see section~\ref{config-files}.)
1130
1131\begin{seealso}
1132 \seetitle[http://www.zope.org/Members/als/tips/win32_mingw_modules]
Andrew M. Kuchling572aae32002-11-06 14:34:50 +00001133 {Building Python modules on MS Windows platform with MinGW}
1134 {Information about building the required libraries for the MinGW
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001135 environment.}
1136
1137 \seeurl{http://pyopengl.sourceforge.net/ftp/win32-stuff/}
Andrew M. Kuchling572aae32002-11-06 14:34:50 +00001138 {Converted import libraries in Cygwin/MinGW and Borland format,
Andrew M. Kuchling1624bc02002-05-07 21:03:45 +00001139 and a script to create the registry entries needed for Distutils
1140 to locate the built Python.}
1141\end{seealso}
1142
1143
1144
Greg Ward7c1e5f62000-03-10 01:56:58 +00001145\end{document}