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