blob: b20f1fbd17181ee61c611e21ed35c1898ebc80bc [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001.. highlightlang:: none
2
3.. _install-index:
4
5*****************************
Georg Brandl48310cd2009-01-03 21:18:54 +00006 Installing Python Modules
Georg Brandl116aa622007-08-15 14:28:22 +00007*****************************
8
9:Author: Greg Ward
10:Release: |version|
11:Date: |today|
12
Christian Heimes5b5e81c2007-12-31 16:14:33 +000013.. TODO: Fill in XXX comments
Georg Brandl116aa622007-08-15 14:28:22 +000014
Christian Heimes5b5e81c2007-12-31 16:14:33 +000015.. The audience for this document includes people who don't know anything
16 about Python and aren't about to learn the language just in order to
17 install and maintain it for their users, i.e. system administrators.
18 Thus, I have to be sure to explain the basics at some point:
19 sys.path and PYTHONPATH at least. Should probably give pointers to
20 other docs on "import site", PYTHONSTARTUP, PYTHONHOME, etc.
Georg Brandl48310cd2009-01-03 21:18:54 +000021
Christian Heimes5b5e81c2007-12-31 16:14:33 +000022 Finally, it might be useful to include all the material from my "Care
23 and Feeding of a Python Installation" talk in here somewhere. Yow!
Georg Brandl116aa622007-08-15 14:28:22 +000024
25.. topic:: Abstract
26
27 This document describes the Python Distribution Utilities ("Distutils") from the
28 end-user's point-of-view, describing how to extend the capabilities of a
29 standard Python installation by building and installing third-party Python
30 modules and extensions.
31
32
33.. _inst-intro:
34
35Introduction
36============
37
38Although Python's extensive standard library covers many programming needs,
39there often comes a time when you need to add some new functionality to your
40Python installation in the form of third-party modules. This might be necessary
41to support your own programming, or to support an application that you want to
42use and that happens to be written in Python.
43
44In the past, there has been little support for adding third-party modules to an
45existing Python installation. With the introduction of the Python Distribution
46Utilities (Distutils for short) in Python 2.0, this changed.
47
48This document is aimed primarily at the people who need to install third-party
49Python modules: end-users and system administrators who just need to get some
50Python application running, and existing Python programmers who want to add some
51new goodies to their toolbox. You don't need to know Python to read this
52document; there will be some brief forays into using Python's interactive mode
53to explore your installation, but that's it. If you're looking for information
54on how to distribute your own Python modules so that others may use them, see
55the :ref:`distutils-index` manual.
56
57
58.. _inst-trivial-install:
59
60Best case: trivial installation
61-------------------------------
62
63In the best case, someone will have prepared a special version of the module
64distribution you want to install that is targeted specifically at your platform
65and is installed just like any other software on your platform. For example,
66the module developer might make an executable installer available for Windows
67users, an RPM package for users of RPM-based Linux systems (Red Hat, SuSE,
68Mandrake, and many others), a Debian package for users of Debian-based Linux
69systems, and so forth.
70
71In that case, you would download the installer appropriate to your platform and
72do the obvious thing with it: run it if it's an executable installer, ``rpm
73--install`` it if it's an RPM, etc. You don't need to run Python or a setup
74script, you don't need to compile anything---you might not even need to read any
Éric Araujo25277962011-07-29 03:11:09 +020075instructions (although it's always a good idea to do so anyway).
Georg Brandl116aa622007-08-15 14:28:22 +000076
77Of course, things will not always be that easy. You might be interested in a
78module distribution that doesn't have an easy-to-use installer for your
79platform. In that case, you'll have to start with the source distribution
80released by the module's author/maintainer. Installing from a source
81distribution is not too hard, as long as the modules are packaged in the
82standard way. The bulk of this document is about building and installing
83modules from standard source distributions.
84
85
86.. _inst-new-standard:
87
88The new standard: Distutils
89---------------------------
90
91If you download a module source distribution, you can tell pretty quickly if it
92was packaged and distributed in the standard way, i.e. using the Distutils.
93First, the distribution's name and version number will be featured prominently
94in the name of the downloaded archive, e.g. :file:`foo-1.0.tar.gz` or
95:file:`widget-0.9.7.zip`. Next, the archive will unpack into a similarly-named
96directory: :file:`foo-1.0` or :file:`widget-0.9.7`. Additionally, the
97distribution will contain a setup script :file:`setup.py`, and a file named
98:file:`README.txt` or possibly just :file:`README`, which should explain that
Éric Araujo577a6af2011-06-09 16:28:19 +020099building and installing the module distribution is a simple matter of running
100one command from a terminal::
Georg Brandl116aa622007-08-15 14:28:22 +0000101
102 python setup.py install
103
Éric Araujod1ca4f92011-08-19 09:36:59 +0200104For Windows, this command should be run from a command prompt window
Éric Araujo24d6cc62011-08-19 03:19:36 +0200105(:menuselection:`Start --> Accessories`)::
Éric Araujo577a6af2011-06-09 16:28:19 +0200106
107 setup.py install
108
Georg Brandl116aa622007-08-15 14:28:22 +0000109If all these things are true, then you already know how to build and install the
110modules you've just downloaded: Run the command above. Unless you need to
111install things in a non-standard way or customize the build process, you don't
112really need this manual. Or rather, the above command is everything you need to
113get out of this manual.
114
115
116.. _inst-standard-install:
117
118Standard Build and Install
119==========================
120
121As described in section :ref:`inst-new-standard`, building and installing a module
Éric Araujo577a6af2011-06-09 16:28:19 +0200122distribution using the Distutils is usually one simple command to run from a
123terminal::
Georg Brandl116aa622007-08-15 14:28:22 +0000124
125 python setup.py install
126
Georg Brandl116aa622007-08-15 14:28:22 +0000127
128.. _inst-platform-variations:
129
130Platform variations
131-------------------
132
133You should always run the setup command from the distribution root directory,
134i.e. the top-level subdirectory that the module source distribution unpacks
135into. For example, if you've just downloaded a module source distribution
136:file:`foo-1.0.tar.gz` onto a Unix system, the normal thing to do is::
137
138 gunzip -c foo-1.0.tar.gz | tar xf - # unpacks into directory foo-1.0
139 cd foo-1.0
140 python setup.py install
141
142On Windows, you'd probably download :file:`foo-1.0.zip`. If you downloaded the
143archive file to :file:`C:\\Temp`, then it would unpack into
144:file:`C:\\Temp\\foo-1.0`; you can use either a archive manipulator with a
145graphical user interface (such as WinZip) or a command-line tool (such as
146:program:`unzip` or :program:`pkunzip`) to unpack the archive. Then, open a
Éric Araujo24d6cc62011-08-19 03:19:36 +0200147command prompt window and run::
Georg Brandl116aa622007-08-15 14:28:22 +0000148
149 cd c:\Temp\foo-1.0
150 python setup.py install
151
152
153.. _inst-splitting-up:
154
155Splitting the job up
156--------------------
157
158Running ``setup.py install`` builds and installs all modules in one run. If you
159prefer to work incrementally---especially useful if you want to customize the
160build process, or if things are going wrong---you can use the setup script to do
161one thing at a time. This is particularly helpful when the build and install
162will be done by different users---for example, you might want to build a module
163distribution and hand it off to a system administrator for installation (or do
164it yourself, with super-user privileges).
165
166For example, you can build everything in one step, and then install everything
167in a second step, by invoking the setup script twice::
168
169 python setup.py build
170 python setup.py install
171
172If you do this, you will notice that running the :command:`install` command
173first runs the :command:`build` command, which---in this case---quickly notices
174that it has nothing to do, since everything in the :file:`build` directory is
175up-to-date.
176
177You may not need this ability to break things down often if all you do is
178install modules downloaded off the 'net, but it's very handy for more advanced
179tasks. If you get into distributing your own Python modules and extensions,
180you'll run lots of individual Distutils commands on their own.
181
182
183.. _inst-how-build-works:
184
185How building works
186------------------
187
188As implied above, the :command:`build` command is responsible for putting the
189files to install into a *build directory*. By default, this is :file:`build`
190under the distribution root; if you're excessively concerned with speed, or want
191to keep the source tree pristine, you can change the build directory with the
192:option:`--build-base` option. For example::
193
194 python setup.py build --build-base=/tmp/pybuild/foo-1.0
195
196(Or you could do this permanently with a directive in your system or personal
197Distutils configuration file; see section :ref:`inst-config-files`.) Normally, this
198isn't necessary.
199
200The default layout for the build tree is as follows::
201
202 --- build/ --- lib/
203 or
204 --- build/ --- lib.<plat>/
205 temp.<plat>/
206
207where ``<plat>`` expands to a brief description of the current OS/hardware
208platform and Python version. The first form, with just a :file:`lib` directory,
209is used for "pure module distributions"---that is, module distributions that
210include only pure Python modules. If a module distribution contains any
211extensions (modules written in C/C++), then the second form, with two ``<plat>``
212directories, is used. In that case, the :file:`temp.{plat}` directory holds
213temporary files generated by the compile/link process that don't actually get
214installed. In either case, the :file:`lib` (or :file:`lib.{plat}`) directory
215contains all Python modules (pure Python and extensions) that will be installed.
216
217In the future, more directories will be added to handle Python scripts,
218documentation, binary executables, and whatever else is needed to handle the job
219of installing Python modules and applications.
220
221
222.. _inst-how-install-works:
223
224How installation works
225----------------------
226
227After the :command:`build` command runs (whether you run it explicitly, or the
228:command:`install` command does it for you), the work of the :command:`install`
229command is relatively simple: all it has to do is copy everything under
230:file:`build/lib` (or :file:`build/lib.{plat}`) to your chosen installation
231directory.
232
233If you don't choose an installation directory---i.e., if you just run ``setup.py
234install``\ ---then the :command:`install` command installs to the standard
235location for third-party Python modules. This location varies by platform and
236by how you built/installed Python itself. On Unix (and Mac OS X, which is also
237Unix-based), it also depends on whether the module distribution being installed
238is pure Python or contains extensions ("non-pure"):
239
240+-----------------+-----------------------------------------------------+--------------------------------------------------+-------+
241| Platform | Standard installation location | Default value | Notes |
242+=================+=====================================================+==================================================+=======+
243| Unix (pure) | :file:`{prefix}/lib/python{X.Y}/site-packages` | :file:`/usr/local/lib/python{X.Y}/site-packages` | \(1) |
244+-----------------+-----------------------------------------------------+--------------------------------------------------+-------+
245| Unix (non-pure) | :file:`{exec-prefix}/lib/python{X.Y}/site-packages` | :file:`/usr/local/lib/python{X.Y}/site-packages` | \(1) |
246+-----------------+-----------------------------------------------------+--------------------------------------------------+-------+
Brian Curtin308053e2011-05-03 21:57:00 -0500247| Windows | :file:`{prefix}\\Lib\\site-packages` | :file:`C:\\Python{XY}\\Lib\\site-packages` | \(2) |
Georg Brandl116aa622007-08-15 14:28:22 +0000248+-----------------+-----------------------------------------------------+--------------------------------------------------+-------+
249
250Notes:
251
252(1)
253 Most Linux distributions include Python as a standard part of the system, so
254 :file:`{prefix}` and :file:`{exec-prefix}` are usually both :file:`/usr` on
255 Linux. If you build Python yourself on Linux (or any Unix-like system), the
256 default :file:`{prefix}` and :file:`{exec-prefix}` are :file:`/usr/local`.
257
258(2)
259 The default installation directory on Windows was :file:`C:\\Program
260 Files\\Python` under Python 1.6a1, 1.5.2, and earlier.
261
262:file:`{prefix}` and :file:`{exec-prefix}` stand for the directories that Python
263is installed to, and where it finds its libraries at run-time. They are always
264the same under Windows, and very often the same under Unix and Mac OS X. You
265can find out what your Python installation uses for :file:`{prefix}` and
266:file:`{exec-prefix}` by running Python in interactive mode and typing a few
267simple commands. Under Unix, just type ``python`` at the shell prompt. Under
268Windows, choose :menuselection:`Start --> Programs --> Python X.Y -->
269Python (command line)`. Once the interpreter is started, you type Python code
270at the prompt. For example, on my Linux system, I type the three Python
271statements shown below, and get the output as shown, to find out my
272:file:`{prefix}` and :file:`{exec-prefix}`::
273
Georg Brandl48310cd2009-01-03 21:18:54 +0000274 Python 2.4 (#26, Aug 7 2004, 17:19:02)
Georg Brandl116aa622007-08-15 14:28:22 +0000275 Type "help", "copyright", "credits" or "license" for more information.
276 >>> import sys
277 >>> sys.prefix
278 '/usr'
279 >>> sys.exec_prefix
280 '/usr'
281
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200282A few other placeholders are used in this document: :file:`{X.Y}` stands for the
283version of Python, for example ``3.2``; :file:`{abiflags}` will be replaced by
284the value of :data:`sys.abiflags` or the empty string for platforms which don't
285define ABI flags; :file:`{distname}` will be replaced by the name of the module
286distribution being installed. Dots and capitalization are important in the
287paths; for example, a value that uses ``python3.2`` on UNIX will typically use
288``Python32`` on Windows.
289
Georg Brandl116aa622007-08-15 14:28:22 +0000290If you don't want to install modules to the standard location, or if you don't
291have permission to write there, then you need to read about alternate
292installations in section :ref:`inst-alt-install`. If you want to customize your
293installation directories more heavily, see section :ref:`inst-custom-install` on
294custom installations.
295
296
297.. _inst-alt-install:
298
299Alternate Installation
300======================
301
302Often, it is necessary or desirable to install modules to a location other than
303the standard location for third-party Python modules. For example, on a Unix
304system you might not have permission to write to the standard third-party module
305directory. Or you might wish to try out a module before making it a standard
306part of your local Python installation. This is especially true when upgrading
307a distribution already present: you want to make sure your existing base of
308scripts still works with the new version before actually upgrading.
309
310The Distutils :command:`install` command is designed to make installing module
311distributions to an alternate location simple and painless. The basic idea is
312that you supply a base directory for the installation, and the
313:command:`install` command picks a set of directories (called an *installation
314scheme*) under this base directory in which to install files. The details
315differ across platforms, so read whichever of the following sections applies to
316you.
317
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200318Note that the various alternate installation schemes are mutually exclusive: you
319can pass ``--user``, or ``--home``, or ``--prefix`` and ``--exec-prefix``, or
320``--install-base`` and ``--install-platbase``, but you can't mix from these
321groups.
Georg Brandl116aa622007-08-15 14:28:22 +0000322
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200323
324.. _inst-alt-install-user:
325
326Alternate installation: the user scheme
327---------------------------------------
328
329This scheme is designed to be the most convenient solution for users that don't
330have write permission to the global site-packages directory or don't want to
331install into it. It is enabled with a simple option::
332
333 python setup.py install --user
334
335Files will be installed into subdirectories of :data:`site.USER_BASE` (written
336as :file:`{userbase}` hereafter). This scheme installs pure Python modules and
337extension modules in the same location (also known as :data:`site.USER_SITE`).
338Here are the values for UNIX, including Mac OS X:
339
340=============== ===========================================================
341Type of file Installation directory
342=============== ===========================================================
343modules :file:`{userbase}/lib/python{X.Y}/site-packages`
344scripts :file:`{userbase}/bin`
345data :file:`{userbase}`
346C headers :file:`{userbase}/include/python{X.Y}{abiflags}/{distname}`
347=============== ===========================================================
348
349And here are the values used on Windows:
350
351=============== ===========================================================
352Type of file Installation directory
353=============== ===========================================================
354modules :file:`{userbase}\\Python{XY}\\site-packages`
355scripts :file:`{userbase}\\Scripts`
356data :file:`{userbase}`
357C headers :file:`{userbase}\\Python{XY}\\Include\\{distname}`
358=============== ===========================================================
359
360The advantage of using this scheme compared to the other ones described below is
361that the user site-packages directory is under normal conditions always included
362in :data:`sys.path` (see :mod:`site` for more information), which means that
363there is no additional step to perform after running the :file:`setup.py` script
364to finalize the installation.
365
366The :command:`build_ext` command also has a ``--user`` option to add
367:file:`{userbase}/include` to the compiler search path for header files and
368:file:`{userbase}/lib` to the compiler search path for libraries as well as to
369the runtime search path for shared C libraries (rpath).
370
371
372.. _inst-alt-install-home:
Georg Brandl116aa622007-08-15 14:28:22 +0000373
374Alternate installation: the home scheme
375---------------------------------------
376
377The idea behind the "home scheme" is that you build and maintain a personal
378stash of Python modules. This scheme's name is derived from the idea of a
379"home" directory on Unix, since it's not unusual for a Unix user to make their
380home directory have a layout similar to :file:`/usr/` or :file:`/usr/local/`.
Georg Brandlf6914aa2010-07-26 15:11:49 +0000381This scheme can be used by anyone, regardless of the operating system they
382are installing for.
Georg Brandl116aa622007-08-15 14:28:22 +0000383
384Installing a new module distribution is as simple as ::
385
386 python setup.py install --home=<dir>
387
388where you can supply any directory you like for the :option:`--home` option. On
389Unix, lazy typists can just type a tilde (``~``); the :command:`install` command
390will expand this to your home directory::
391
392 python setup.py install --home=~
393
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200394To make Python find the distributions installed with this scheme, you may have
395to :ref:`modify Python's search path <inst-search-path>` or edit
396:mod:`sitecustomize` (see :mod:`site`) to call :func:`site.addsitedir` or edit
397:data:`sys.path`.
398
Georg Brandl116aa622007-08-15 14:28:22 +0000399The :option:`--home` option defines the installation base directory. Files are
400installed to the following directories under the installation base as follows:
401
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200402=============== ===========================================================
403Type of file Installation directory
404=============== ===========================================================
405modules :file:`{home}/lib/python`
406scripts :file:`{home}/bin`
407data :file:`{home}`
408C headers :file:`{home}/include/python/{distname}`
409=============== ===========================================================
410
411(Mentally replace slashes with backslashes if you're on Windows.)
Georg Brandl116aa622007-08-15 14:28:22 +0000412
Georg Brandl116aa622007-08-15 14:28:22 +0000413
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200414.. _inst-alt-install-prefix-unix:
Georg Brandl116aa622007-08-15 14:28:22 +0000415
416Alternate installation: Unix (the prefix scheme)
417------------------------------------------------
418
419The "prefix scheme" is useful when you wish to use one Python installation to
420perform the build/install (i.e., to run the setup script), but install modules
421into the third-party module directory of a different Python installation (or
422something that looks like a different Python installation). If this sounds a
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200423trifle unusual, it is---that's why the user and home schemes come before. However,
Georg Brandl116aa622007-08-15 14:28:22 +0000424there are at least two known cases where the prefix scheme will be useful.
425
426First, consider that many Linux distributions put Python in :file:`/usr`, rather
427than the more traditional :file:`/usr/local`. This is entirely appropriate,
428since in those cases Python is part of "the system" rather than a local add-on.
429However, if you are installing Python modules from source, you probably want
430them to go in :file:`/usr/local/lib/python2.{X}` rather than
431:file:`/usr/lib/python2.{X}`. This can be done with ::
432
433 /usr/bin/python setup.py install --prefix=/usr/local
434
435Another possibility is a network filesystem where the name used to write to a
436remote directory is different from the name used to read it: for example, the
437Python interpreter accessed as :file:`/usr/local/bin/python` might search for
438modules in :file:`/usr/local/lib/python2.{X}`, but those modules would have to
439be installed to, say, :file:`/mnt/{@server}/export/lib/python2.{X}`. This could
440be done with ::
441
442 /usr/local/bin/python setup.py install --prefix=/mnt/@server/export
443
444In either case, the :option:`--prefix` option defines the installation base, and
445the :option:`--exec-prefix` option defines the platform-specific installation
446base, which is used for platform-specific files. (Currently, this just means
447non-pure module distributions, but could be expanded to C libraries, binary
448executables, etc.) If :option:`--exec-prefix` is not supplied, it defaults to
449:option:`--prefix`. Files are installed as follows:
450
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200451================= ==========================================================
452Type of file Installation directory
453================= ==========================================================
454Python modules :file:`{prefix}/lib/python{X.Y}/site-packages`
455extension modules :file:`{exec-prefix}/lib/python{X.Y}/site-packages`
456scripts :file:`{prefix}/bin`
457data :file:`{prefix}`
458C headers :file:`{prefix}/include/python{X.Y}{abiflags}/{distname}`
459================= ==========================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000460
461There is no requirement that :option:`--prefix` or :option:`--exec-prefix`
462actually point to an alternate Python installation; if the directories listed
463above do not already exist, they are created at installation time.
464
465Incidentally, the real reason the prefix scheme is important is simply that a
466standard Unix installation uses the prefix scheme, but with :option:`--prefix`
467and :option:`--exec-prefix` supplied by Python itself as ``sys.prefix`` and
468``sys.exec_prefix``. Thus, you might think you'll never use the prefix scheme,
469but every time you run ``python setup.py install`` without any other options,
470you're using it.
471
472Note that installing extensions to an alternate Python installation has no
473effect on how those extensions are built: in particular, the Python header files
474(:file:`Python.h` and friends) installed with the Python interpreter used to run
475the setup script will be used in compiling extensions. It is your
476responsibility to ensure that the interpreter used to run extensions installed
477in this way is compatible with the interpreter used to build them. The best way
478to do this is to ensure that the two interpreters are the same version of Python
479(possibly different builds, or possibly copies of the same build). (Of course,
480if your :option:`--prefix` and :option:`--exec-prefix` don't even point to an
481alternate Python installation, this is immaterial.)
482
483
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200484.. _inst-alt-install-prefix-windows:
Georg Brandl116aa622007-08-15 14:28:22 +0000485
486Alternate installation: Windows (the prefix scheme)
487---------------------------------------------------
488
489Windows has no concept of a user's home directory, and since the standard Python
490installation under Windows is simpler than under Unix, the :option:`--prefix`
491option has traditionally been used to install additional packages in separate
492locations on Windows. ::
493
494 python setup.py install --prefix="\Temp\Python"
495
496to install modules to the :file:`\\Temp\\Python` directory on the current drive.
497
498The installation base is defined by the :option:`--prefix` option; the
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200499:option:`--exec-prefix` option is not supported under Windows, which means that
500pure Python modules and extension modules are installed into the same location.
501Files are installed as follows:
Georg Brandl116aa622007-08-15 14:28:22 +0000502
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200503=============== ==========================================================
504Type of file Installation directory
505=============== ==========================================================
506modules :file:`{prefix}\\Lib\\site-packages`
507scripts :file:`{prefix}\\Scripts`
508data :file:`{prefix}`
509C headers :file:`{prefix}\\Include\\{distname}`
510=============== ==========================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000511
512
513.. _inst-custom-install:
514
515Custom Installation
516===================
517
518Sometimes, the alternate installation schemes described in section
519:ref:`inst-alt-install` just don't do what you want. You might want to tweak just
520one or two directories while keeping everything under the same base directory,
521or you might want to completely redefine the installation scheme. In either
522case, you're creating a *custom installation scheme*.
523
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200524To create a custom installation scheme, you start with one of the alternate
525schemes and override some of the installation directories used for the various
526types of files, using these options:
527
528====================== =======================
529Type of file Override option
530====================== =======================
531Python modules ``--install-purelib``
532extension modules ``--install-platlib``
533all modules ``--install-lib``
534scripts ``--install-scripts``
535data ``--install-data``
536C headers ``--install-headers``
537====================== =======================
538
539These override options can be relative, absolute,
Georg Brandl116aa622007-08-15 14:28:22 +0000540or explicitly defined in terms of one of the installation base directories.
541(There are two installation base directories, and they are normally the same---
542they only differ when you use the Unix "prefix scheme" and supply different
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200543``--prefix`` and ``--exec-prefix`` options; using ``--install-lib`` will
544override values computed or given for ``--install-purelib`` and
545``--install-platlib``, and is recommended for schemes that don't make a
546difference between Python and extension modules.)
Georg Brandl116aa622007-08-15 14:28:22 +0000547
548For example, say you're installing a module distribution to your home directory
549under Unix---but you want scripts to go in :file:`~/scripts` rather than
550:file:`~/bin`. As you might expect, you can override this directory with the
551:option:`--install-scripts` option; in this case, it makes most sense to supply
552a relative path, which will be interpreted relative to the installation base
553directory (your home directory, in this case)::
554
555 python setup.py install --home=~ --install-scripts=scripts
556
557Another Unix example: suppose your Python installation was built and installed
558with a prefix of :file:`/usr/local/python`, so under a standard installation
559scripts will wind up in :file:`/usr/local/python/bin`. If you want them in
560:file:`/usr/local/bin` instead, you would supply this absolute directory for the
561:option:`--install-scripts` option::
562
563 python setup.py install --install-scripts=/usr/local/bin
564
565(This performs an installation using the "prefix scheme," where the prefix is
566whatever your Python interpreter was installed with--- :file:`/usr/local/python`
567in this case.)
568
569If you maintain Python on Windows, you might want third-party modules to live in
570a subdirectory of :file:`{prefix}`, rather than right in :file:`{prefix}`
571itself. This is almost as easy as customizing the script installation directory
572---you just have to remember that there are two types of modules to worry about,
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200573Python and extension modules, which can conveniently be both controlled by one
574option::
Georg Brandl116aa622007-08-15 14:28:22 +0000575
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200576 python setup.py install --install-lib=Site
Georg Brandl116aa622007-08-15 14:28:22 +0000577
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200578The specified installation directory is relative to :file:`{prefix}`. Of
579course, you also have to ensure that this directory is in Python's module
580search path, such as by putting a :file:`.pth` file in a site directory (see
581:mod:`site`). See section :ref:`inst-search-path` to find out how to modify
582Python's search path.
Georg Brandl116aa622007-08-15 14:28:22 +0000583
584If you want to define an entire installation scheme, you just have to supply all
585of the installation directory options. The recommended way to do this is to
586supply relative paths; for example, if you want to maintain all Python
587module-related files under :file:`python` in your home directory, and you want a
588separate directory for each platform that you use your home directory from, you
589might define the following installation scheme::
590
591 python setup.py install --home=~ \
592 --install-purelib=python/lib \
593 --install-platlib=python/lib.$PLAT \
594 --install-scripts=python/scripts
595 --install-data=python/data
596
Georg Brandl81ac1ce2007-08-31 17:17:17 +0000597or, equivalently, ::
Georg Brandl116aa622007-08-15 14:28:22 +0000598
599 python setup.py install --home=~/python \
600 --install-purelib=lib \
601 --install-platlib='lib.$PLAT' \
602 --install-scripts=scripts
603 --install-data=data
604
605``$PLAT`` is not (necessarily) an environment variable---it will be expanded by
606the Distutils as it parses your command line options, just as it does when
607parsing your configuration file(s).
608
Georg Brandl116aa622007-08-15 14:28:22 +0000609Obviously, specifying the entire installation scheme every time you install a
610new module distribution would be very tedious. Thus, you can put these options
611into your Distutils config file (see section :ref:`inst-config-files`)::
612
613 [install]
614 install-base=$HOME
615 install-purelib=python/lib
616 install-platlib=python/lib.$PLAT
617 install-scripts=python/scripts
618 install-data=python/data
619
620or, equivalently, ::
621
622 [install]
623 install-base=$HOME/python
624 install-purelib=lib
625 install-platlib=lib.$PLAT
626 install-scripts=scripts
627 install-data=data
628
629Note that these two are *not* equivalent if you supply a different installation
630base directory when you run the setup script. For example, ::
631
632 python setup.py install --install-base=/tmp
633
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200634would install pure modules to :file:`/tmp/python/lib` in the first case, and
635to :file:`/tmp/lib` in the second case. (For the second case, you probably
Georg Brandl116aa622007-08-15 14:28:22 +0000636want to supply an installation base of :file:`/tmp/python`.)
637
638You probably noticed the use of ``$HOME`` and ``$PLAT`` in the sample
639configuration file input. These are Distutils configuration variables, which
640bear a strong resemblance to environment variables. In fact, you can use
641environment variables in config files on platforms that have such a notion but
642the Distutils additionally define a few extra variables that may not be in your
643environment, such as ``$PLAT``. (And of course, on systems that don't have
644environment variables, such as Mac OS 9, the configuration variables supplied by
645the Distutils are the only ones you can use.) See section :ref:`inst-config-files`
646for details.
647
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000648.. XXX need some Windows examples---when would custom installation schemes be
649 needed on those platforms?
Georg Brandl116aa622007-08-15 14:28:22 +0000650
Georg Brandl116aa622007-08-15 14:28:22 +0000651
Éric Araujo7dc76fd2011-08-06 16:58:15 +0200652.. XXX Move this to Doc/using
Georg Brandl116aa622007-08-15 14:28:22 +0000653
654.. _inst-search-path:
655
656Modifying Python's Search Path
657------------------------------
658
659When the Python interpreter executes an :keyword:`import` statement, it searches
660for both Python code and extension modules along a search path. A default value
661for the path is configured into the Python binary when the interpreter is built.
662You can determine the path by importing the :mod:`sys` module and printing the
663value of ``sys.path``. ::
664
665 $ python
666 Python 2.2 (#11, Oct 3 2002, 13:31:27)
667 [GCC 2.96 20000731 (Red Hat Linux 7.3 2.96-112)] on linux2
Georg Brandl1f01deb2009-01-03 22:47:39 +0000668 Type "help", "copyright", "credits" or "license" for more information.
Georg Brandl116aa622007-08-15 14:28:22 +0000669 >>> import sys
670 >>> sys.path
Georg Brandl48310cd2009-01-03 21:18:54 +0000671 ['', '/usr/local/lib/python2.3', '/usr/local/lib/python2.3/plat-linux2',
672 '/usr/local/lib/python2.3/lib-tk', '/usr/local/lib/python2.3/lib-dynload',
Georg Brandl116aa622007-08-15 14:28:22 +0000673 '/usr/local/lib/python2.3/site-packages']
674 >>>
675
676The null string in ``sys.path`` represents the current working directory.
677
Georg Brandl116aa622007-08-15 14:28:22 +0000678The expected convention for locally installed packages is to put them in the
679:file:`{...}/site-packages/` directory, but you may want to install Python
680modules into some arbitrary directory. For example, your site may have a
681convention of keeping all software related to the web server under :file:`/www`.
682Add-on Python modules might then belong in :file:`/www/python`, and in order to
683import them, this directory must be added to ``sys.path``. There are several
684different ways to add the directory.
685
686The most convenient way is to add a path configuration file to a directory
687that's already on Python's path, usually to the :file:`.../site-packages/`
688directory. Path configuration files have an extension of :file:`.pth`, and each
689line must contain a single path that will be appended to ``sys.path``. (Because
690the new paths are appended to ``sys.path``, modules in the added directories
691will not override standard modules. This means you can't use this mechanism for
692installing fixed versions of standard modules.)
693
694Paths can be absolute or relative, in which case they're relative to the
Christian Heimes9cd17752007-11-18 19:35:23 +0000695directory containing the :file:`.pth` file. See the documentation of
Thomas Woutersed03b412007-08-28 21:37:11 +0000696the :mod:`site` module for more information.
Georg Brandl116aa622007-08-15 14:28:22 +0000697
698A slightly less convenient way is to edit the :file:`site.py` file in Python's
699standard library, and modify ``sys.path``. :file:`site.py` is automatically
700imported when the Python interpreter is executed, unless the :option:`-S` switch
701is supplied to suppress this behaviour. So you could simply edit
702:file:`site.py` and add two lines to it::
703
704 import sys
705 sys.path.append('/www/python/')
706
707However, if you reinstall the same major version of Python (perhaps when
708upgrading from 2.2 to 2.2.2, for example) :file:`site.py` will be overwritten by
709the stock version. You'd have to remember that it was modified and save a copy
710before doing the installation.
711
712There are two environment variables that can modify ``sys.path``.
713:envvar:`PYTHONHOME` sets an alternate value for the prefix of the Python
714installation. For example, if :envvar:`PYTHONHOME` is set to ``/www/python``,
715the search path will be set to ``['', '/www/python/lib/pythonX.Y/',
716'/www/python/lib/pythonX.Y/plat-linux2', ...]``.
717
718The :envvar:`PYTHONPATH` variable can be set to a list of paths that will be
719added to the beginning of ``sys.path``. For example, if :envvar:`PYTHONPATH` is
720set to ``/www/python:/opt/py``, the search path will begin with
721``['/www/python', '/opt/py']``. (Note that directories must exist in order to
722be added to ``sys.path``; the :mod:`site` module removes paths that don't
723exist.)
724
725Finally, ``sys.path`` is just a regular Python list, so any Python application
726can modify it by adding or removing entries.
727
728
729.. _inst-config-files:
730
731Distutils Configuration Files
732=============================
733
734As mentioned above, you can use Distutils configuration files to record personal
735or site preferences for any Distutils options. That is, any option to any
736command can be stored in one of two or three (depending on your platform)
737configuration files, which will be consulted before the command-line is parsed.
738This means that configuration files will override default values, and the
739command-line will in turn override configuration files. Furthermore, if
740multiple configuration files apply, values from "earlier" files are overridden
741by "later" files.
742
743
744.. _inst-config-filenames:
745
746Location and names of config files
747----------------------------------
748
749The names and locations of the configuration files vary slightly across
750platforms. On Unix and Mac OS X, the three configuration files (in the order
751they are processed) are:
752
753+--------------+----------------------------------------------------------+-------+
754| Type of file | Location and filename | Notes |
755+==============+==========================================================+=======+
756| system | :file:`{prefix}/lib/python{ver}/distutils/distutils.cfg` | \(1) |
757+--------------+----------------------------------------------------------+-------+
758| personal | :file:`$HOME/.pydistutils.cfg` | \(2) |
759+--------------+----------------------------------------------------------+-------+
760| local | :file:`setup.cfg` | \(3) |
761+--------------+----------------------------------------------------------+-------+
762
763And on Windows, the configuration files are:
764
765+--------------+-------------------------------------------------+-------+
766| Type of file | Location and filename | Notes |
767+==============+=================================================+=======+
768| system | :file:`{prefix}\\Lib\\distutils\\distutils.cfg` | \(4) |
769+--------------+-------------------------------------------------+-------+
770| personal | :file:`%HOME%\\pydistutils.cfg` | \(5) |
771+--------------+-------------------------------------------------+-------+
772| local | :file:`setup.cfg` | \(3) |
773+--------------+-------------------------------------------------+-------+
774
Tarek Ziadéc7c71ff2009-10-27 23:12:01 +0000775On all platforms, the "personal" file can be temporarily disabled by
776passing the `--no-user-cfg` option.
777
Georg Brandl116aa622007-08-15 14:28:22 +0000778Notes:
779
780(1)
781 Strictly speaking, the system-wide configuration file lives in the directory
782 where the Distutils are installed; under Python 1.6 and later on Unix, this is
783 as shown. For Python 1.5.2, the Distutils will normally be installed to
784 :file:`{prefix}/lib/python1.5/site-packages/distutils`, so the system
785 configuration file should be put there under Python 1.5.2.
786
787(2)
788 On Unix, if the :envvar:`HOME` environment variable is not defined, the user's
789 home directory will be determined with the :func:`getpwuid` function from the
Tarek Ziadéf3b33222009-08-21 14:22:45 +0000790 standard :mod:`pwd` module. This is done by the :func:`os.path.expanduser`
791 function used by Distutils.
Georg Brandl116aa622007-08-15 14:28:22 +0000792
793(3)
794 I.e., in the current directory (usually the location of the setup script).
795
796(4)
797 (See also note (1).) Under Python 1.6 and later, Python's default "installation
798 prefix" is :file:`C:\\Python`, so the system configuration file is normally
799 :file:`C:\\Python\\Lib\\distutils\\distutils.cfg`. Under Python 1.5.2, the
800 default prefix was :file:`C:\\Program Files\\Python`, and the Distutils were not
801 part of the standard library---so the system configuration file would be
802 :file:`C:\\Program Files\\Python\\distutils\\distutils.cfg` in a standard Python
803 1.5.2 installation under Windows.
804
805(5)
Tarek Ziadéf3b33222009-08-21 14:22:45 +0000806 On Windows, if the :envvar:`HOME` environment variable is not defined,
807 :envvar:`USERPROFILE` then :envvar:`HOMEDRIVE` and :envvar:`HOMEPATH` will
808 be tried. This is done by the :func:`os.path.expanduser` function used
809 by Distutils.
Georg Brandl116aa622007-08-15 14:28:22 +0000810
811
812.. _inst-config-syntax:
813
814Syntax of config files
815----------------------
816
817The Distutils configuration files all have the same syntax. The config files
818are grouped into sections. There is one section for each Distutils command,
819plus a ``global`` section for global options that affect every command. Each
820section consists of one option per line, specified as ``option=value``.
821
822For example, the following is a complete config file that just forces all
823commands to run quietly by default::
824
825 [global]
826 verbose=0
827
828If this is installed as the system config file, it will affect all processing of
829any Python module distribution by any user on the current system. If it is
830installed as your personal config file (on systems that support them), it will
831affect only module distributions processed by you. And if it is used as the
832:file:`setup.cfg` for a particular module distribution, it affects only that
833distribution.
834
835You could override the default "build base" directory and make the
836:command:`build\*` commands always forcibly rebuild all files with the
837following::
838
839 [build]
840 build-base=blib
841 force=1
842
843which corresponds to the command-line arguments ::
844
845 python setup.py build --build-base=blib --force
846
847except that including the :command:`build` command on the command-line means
848that command will be run. Including a particular command in config files has no
849such implication; it only means that if the command is run, the options in the
850config file will apply. (Or if other commands that derive values from it are
851run, they will use the values in the config file.)
852
853You can find out the complete list of options for any command using the
854:option:`--help` option, e.g.::
855
856 python setup.py build --help
857
858and you can find out the complete list of global options by using
859:option:`--help` without a command::
860
861 python setup.py --help
862
863See also the "Reference" section of the "Distributing Python Modules" manual.
864
865
866.. _inst-building-ext:
867
868Building Extensions: Tips and Tricks
869====================================
870
871Whenever possible, the Distutils try to use the configuration information made
872available by the Python interpreter used to run the :file:`setup.py` script.
873For example, the same compiler and linker flags used to compile Python will also
874be used for compiling extensions. Usually this will work well, but in
875complicated situations this might be inappropriate. This section discusses how
876to override the usual Distutils behaviour.
877
878
879.. _inst-tweak-flags:
880
881Tweaking compiler/linker flags
882------------------------------
883
884Compiling a Python extension written in C or C++ will sometimes require
885specifying custom flags for the compiler and linker in order to use a particular
886library or produce a special kind of object code. This is especially true if the
887extension hasn't been tested on your platform, or if you're trying to
888cross-compile Python.
889
890In the most general case, the extension author might have foreseen that
891compiling the extensions would be complicated, and provided a :file:`Setup` file
892for you to edit. This will likely only be done if the module distribution
893contains many separate extension modules, or if they often require elaborate
894sets of compiler flags in order to work.
895
896A :file:`Setup` file, if present, is parsed in order to get a list of extensions
897to build. Each line in a :file:`Setup` describes a single module. Lines have
898the following structure::
899
900 module ... [sourcefile ...] [cpparg ...] [library ...]
901
902
903Let's examine each of the fields in turn.
904
905* *module* is the name of the extension module to be built, and should be a
906 valid Python identifier. You can't just change this in order to rename a module
907 (edits to the source code would also be needed), so this should be left alone.
908
909* *sourcefile* is anything that's likely to be a source code file, at least
910 judging by the filename. Filenames ending in :file:`.c` are assumed to be
911 written in C, filenames ending in :file:`.C`, :file:`.cc`, and :file:`.c++` are
912 assumed to be C++, and filenames ending in :file:`.m` or :file:`.mm` are assumed
913 to be in Objective C.
914
915* *cpparg* is an argument for the C preprocessor, and is anything starting with
916 :option:`-I`, :option:`-D`, :option:`-U` or :option:`-C`.
917
918* *library* is anything ending in :file:`.a` or beginning with :option:`-l` or
919 :option:`-L`.
920
921If a particular platform requires a special library on your platform, you can
922add it by editing the :file:`Setup` file and running ``python setup.py build``.
923For example, if the module defined by the line ::
924
925 foo foomodule.c
926
927must be linked with the math library :file:`libm.a` on your platform, simply add
928:option:`-lm` to the line::
929
930 foo foomodule.c -lm
931
932Arbitrary switches intended for the compiler or the linker can be supplied with
933the :option:`-Xcompiler` *arg* and :option:`-Xlinker` *arg* options::
934
935 foo foomodule.c -Xcompiler -o32 -Xlinker -shared -lm
936
937The next option after :option:`-Xcompiler` and :option:`-Xlinker` will be
938appended to the proper command line, so in the above example the compiler will
939be passed the :option:`-o32` option, and the linker will be passed
940:option:`-shared`. If a compiler option requires an argument, you'll have to
941supply multiple :option:`-Xcompiler` options; for example, to pass ``-x c++``
942the :file:`Setup` file would have to contain ``-Xcompiler -x -Xcompiler c++``.
943
944Compiler flags can also be supplied through setting the :envvar:`CFLAGS`
945environment variable. If set, the contents of :envvar:`CFLAGS` will be added to
946the compiler flags specified in the :file:`Setup` file.
947
948
949.. _inst-non-ms-compilers:
950
951Using non-Microsoft compilers on Windows
952----------------------------------------
953
954.. sectionauthor:: Rene Liebscher <R.Liebscher@gmx.de>
955
956
957
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000958Borland/CodeGear C++
959^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000960
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000961This subsection describes the necessary steps to use Distutils with the Borland
Georg Brandl116aa622007-08-15 14:28:22 +0000962C++ compiler version 5.5. First you have to know that Borland's object file
963format (OMF) is different from the format used by the Python version you can
964download from the Python or ActiveState Web site. (Python is built with
965Microsoft Visual C++, which uses COFF as the object file format.) For this
966reason you have to convert Python's library :file:`python25.lib` into the
967Borland format. You can do this as follows:
968
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000969.. Should we mention that users have to create cfg-files for the compiler?
970.. see also http://community.borland.com/article/0,1410,21205,00.html
Georg Brandl116aa622007-08-15 14:28:22 +0000971
972::
973
974 coff2omf python25.lib python25_bcpp.lib
975
976The :file:`coff2omf` program comes with the Borland compiler. The file
977:file:`python25.lib` is in the :file:`Libs` directory of your Python
978installation. If your extension uses other libraries (zlib, ...) you have to
979convert them too.
980
981The converted files have to reside in the same directories as the normal
982libraries.
983
984How does Distutils manage to use these libraries with their changed names? If
985the extension needs a library (eg. :file:`foo`) Distutils checks first if it
986finds a library with suffix :file:`_bcpp` (eg. :file:`foo_bcpp.lib`) and then
987uses this library. In the case it doesn't find such a special library it uses
988the default name (:file:`foo.lib`.) [#]_
989
990To let Distutils compile your extension with Borland C++ you now have to type::
991
992 python setup.py build --compiler=bcpp
993
994If you want to use the Borland C++ compiler as the default, you could specify
995this in your personal or system-wide configuration file for Distutils (see
996section :ref:`inst-config-files`.)
997
998
999.. seealso::
1000
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001001 `C++Builder Compiler <http://www.codegear.com/downloads/free/cppbuilder>`_
Georg Brandl116aa622007-08-15 14:28:22 +00001002 Information about the free C++ compiler from Borland, including links to the
1003 download pages.
1004
1005 `Creating Python Extensions Using Borland's Free Compiler <http://www.cyberus.ca/~g_will/pyExtenDL.shtml>`_
1006 Document describing how to use Borland's free command-line C++ compiler to build
1007 Python.
1008
1009
1010GNU C / Cygwin / MinGW
1011^^^^^^^^^^^^^^^^^^^^^^
1012
Georg Brandl116aa622007-08-15 14:28:22 +00001013This section describes the necessary steps to use Distutils with the GNU C/C++
1014compilers in their Cygwin and MinGW distributions. [#]_ For a Python interpreter
1015that was built with Cygwin, everything should work without any of these
1016following steps.
1017
Éric Araujo2d6bb122010-12-15 22:06:35 +00001018Not all extensions can be built with MinGW or Cygwin, but many can. Extensions
1019most likely to not work are those that use C++ or depend on Microsoft Visual C
1020extensions.
1021
1022To let Distutils compile your extension with Cygwin you have to type::
1023
1024 python setup.py build --compiler=cygwin
1025
1026and for Cygwin in no-cygwin mode [#]_ or for MinGW type::
1027
1028 python setup.py build --compiler=mingw32
1029
1030If you want to use any of these options/compilers as default, you should
1031consider writing it in your personal or system-wide configuration file for
1032Distutils (see section :ref:`inst-config-files`.)
1033
1034Older Versions of Python and MinGW
1035""""""""""""""""""""""""""""""""""
1036The following instructions only apply if you're using a version of Python
1037inferior to 2.4.1 with a MinGW inferior to 3.0.0 (with
1038binutils-2.13.90-20030111-1).
1039
1040These compilers require some special libraries. This task is more complex than
Georg Brandl116aa622007-08-15 14:28:22 +00001041for Borland's C++, because there is no program to convert the library. First
1042you have to create a list of symbols which the Python DLL exports. (You can find
Georg Brandl495f7b52009-10-27 15:28:25 +00001043a good program for this task at
1044http://www.emmestech.com/software/pexports-0.43/download_pexports.html).
Georg Brandl116aa622007-08-15 14:28:22 +00001045
Christian Heimes5b5e81c2007-12-31 16:14:33 +00001046.. I don't understand what the next line means. --amk
1047.. (inclusive the references on data structures.)
Georg Brandl116aa622007-08-15 14:28:22 +00001048
1049::
1050
1051 pexports python25.dll >python25.def
1052
1053The location of an installed :file:`python25.dll` will depend on the
1054installation options and the version and language of Windows. In a "just for
1055me" installation, it will appear in the root of the installation directory. In
1056a shared installation, it will be located in the system directory.
1057
1058Then you can create from these information an import library for gcc. ::
1059
1060 /cygwin/bin/dlltool --dllname python25.dll --def python25.def --output-lib libpython25.a
1061
1062The resulting library has to be placed in the same directory as
1063:file:`python25.lib`. (Should be the :file:`libs` directory under your Python
1064installation directory.)
1065
1066If your extension uses other libraries (zlib,...) you might have to convert
1067them too. The converted files have to reside in the same directories as the
1068normal libraries do.
1069
Georg Brandl116aa622007-08-15 14:28:22 +00001070
1071.. seealso::
1072
1073 `Building Python modules on MS Windows platform with MinGW <http://www.zope.org/Members/als/tips/win32_mingw_modules>`_
1074 Information about building the required libraries for the MinGW environment.
1075
Georg Brandl116aa622007-08-15 14:28:22 +00001076
1077.. rubric:: Footnotes
1078
1079.. [#] This also means you could replace all existing COFF-libraries with OMF-libraries
1080 of the same name.
1081
1082.. [#] Check http://sources.redhat.com/cygwin/ and http://www.mingw.org/ for more
1083 information
1084
1085.. [#] Then you have no POSIX emulation available, but you also don't need
1086 :file:`cygwin1.dll`.