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