blob: 738aaa152fc8a6f88dd426c7d339fda7655a3ad7 [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
Petri Lehtinen9f74c6c2013-02-23 19:26:56 +0100192 python setup.py build --build-base=/path/to/pybuild/foo-1.0
Georg Brandl116aa622007-08-15 14:28:22 +0000193
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
Georg Brandl44ea77b2013-03-28 13:28:44 +0100238.. tabularcolumns:: |l|l|l|l|
239
Georg Brandl116aa622007-08-15 14:28:22 +0000240+-----------------+-----------------------------------------------------+--------------------------------------------------+-------+
241| Platform | Standard installation location | Default value | Notes |
242+=================+=====================================================+==================================================+=======+
243| Unix (pure) | :file:`{prefix}/lib/python{X.Y}/site-packages` | :file:`/usr/local/lib/python{X.Y}/site-packages` | \(1) |
244+-----------------+-----------------------------------------------------+--------------------------------------------------+-------+
245| Unix (non-pure) | :file:`{exec-prefix}/lib/python{X.Y}/site-packages` | :file:`/usr/local/lib/python{X.Y}/site-packages` | \(1) |
246+-----------------+-----------------------------------------------------+--------------------------------------------------+-------+
Brian Curtin308053e2011-05-03 21:57:00 -0500247| Windows | :file:`{prefix}\\Lib\\site-packages` | :file:`C:\\Python{XY}\\Lib\\site-packages` | \(2) |
Georg Brandl116aa622007-08-15 14:28:22 +0000248+-----------------+-----------------------------------------------------+--------------------------------------------------+-------+
249
250Notes:
251
252(1)
253 Most Linux distributions include Python as a standard part of the system, so
254 :file:`{prefix}` and :file:`{exec-prefix}` are usually both :file:`/usr` on
255 Linux. If you build Python yourself on Linux (or any Unix-like system), the
256 default :file:`{prefix}` and :file:`{exec-prefix}` are :file:`/usr/local`.
257
258(2)
259 The default installation directory on Windows was :file:`C:\\Program
260 Files\\Python` under Python 1.6a1, 1.5.2, and earlier.
261
262:file:`{prefix}` and :file:`{exec-prefix}` stand for the directories that Python
263is installed to, and where it finds its libraries at run-time. They are always
264the same under Windows, and very often the same under Unix and Mac OS X. You
265can find out what your Python installation uses for :file:`{prefix}` and
266:file:`{exec-prefix}` by running Python in interactive mode and typing a few
267simple commands. Under Unix, just type ``python`` at the shell prompt. Under
268Windows, choose :menuselection:`Start --> Programs --> Python X.Y -->
269Python (command line)`. Once the interpreter is started, you type Python code
270at the prompt. For example, on my Linux system, I type the three Python
271statements shown below, and get the output as shown, to find out my
272:file:`{prefix}` and :file:`{exec-prefix}`::
273
Georg Brandl48310cd2009-01-03 21:18:54 +0000274 Python 2.4 (#26, Aug 7 2004, 17:19:02)
Georg Brandl116aa622007-08-15 14:28:22 +0000275 Type "help", "copyright", "credits" or "license" for more information.
276 >>> import sys
277 >>> sys.prefix
278 '/usr'
279 >>> sys.exec_prefix
280 '/usr'
281
Éric Araujo6ef038e2011-08-06 16:30:42 +0200282A few other placeholders are used in this document: :file:`{X.Y}` stands for the
283version of Python, for example ``3.2``; :file:`{abiflags}` will be replaced by
284the value of :data:`sys.abiflags` or the empty string for platforms which don't
285define ABI flags; :file:`{distname}` will be replaced by the name of the module
286distribution being installed. Dots and capitalization are important in the
287paths; for example, a value that uses ``python3.2`` on UNIX will typically use
288``Python32`` on Windows.
289
Georg Brandl116aa622007-08-15 14:28:22 +0000290If you don't want to install modules to the standard location, or if you don't
291have permission to write there, then you need to read about alternate
292installations in section :ref:`inst-alt-install`. If you want to customize your
293installation directories more heavily, see section :ref:`inst-custom-install` on
294custom installations.
295
296
297.. _inst-alt-install:
298
299Alternate Installation
300======================
301
302Often, it is necessary or desirable to install modules to a location other than
303the standard location for third-party Python modules. For example, on a Unix
304system you might not have permission to write to the standard third-party module
305directory. Or you might wish to try out a module before making it a standard
306part of your local Python installation. This is especially true when upgrading
307a distribution already present: you want to make sure your existing base of
308scripts still works with the new version before actually upgrading.
309
310The Distutils :command:`install` command is designed to make installing module
311distributions to an alternate location simple and painless. The basic idea is
312that you supply a base directory for the installation, and the
313:command:`install` command picks a set of directories (called an *installation
314scheme*) under this base directory in which to install files. The details
315differ across platforms, so read whichever of the following sections applies to
316you.
317
Éric Araujo6ef038e2011-08-06 16:30:42 +0200318Note that the various alternate installation schemes are mutually exclusive: you
319can pass ``--user``, or ``--home``, or ``--prefix`` and ``--exec-prefix``, or
320``--install-base`` and ``--install-platbase``, but you can't mix from these
321groups.
Georg Brandl116aa622007-08-15 14:28:22 +0000322
Éric Araujo6ef038e2011-08-06 16:30:42 +0200323
324.. _inst-alt-install-user:
325
326Alternate installation: the user scheme
327---------------------------------------
328
329This scheme is designed to be the most convenient solution for users that don't
330have write permission to the global site-packages directory or don't want to
331install into it. It is enabled with a simple option::
332
333 python setup.py install --user
334
335Files will be installed into subdirectories of :data:`site.USER_BASE` (written
336as :file:`{userbase}` hereafter). This scheme installs pure Python modules and
337extension modules in the same location (also known as :data:`site.USER_SITE`).
338Here are the values for UNIX, including Mac OS X:
339
340=============== ===========================================================
341Type of file Installation directory
342=============== ===========================================================
343modules :file:`{userbase}/lib/python{X.Y}/site-packages`
344scripts :file:`{userbase}/bin`
345data :file:`{userbase}`
346C headers :file:`{userbase}/include/python{X.Y}{abiflags}/{distname}`
347=============== ===========================================================
348
349And here are the values used on Windows:
350
351=============== ===========================================================
352Type of file Installation directory
353=============== ===========================================================
354modules :file:`{userbase}\\Python{XY}\\site-packages`
355scripts :file:`{userbase}\\Scripts`
356data :file:`{userbase}`
357C headers :file:`{userbase}\\Python{XY}\\Include\\{distname}`
358=============== ===========================================================
359
360The advantage of using this scheme compared to the other ones described below is
361that the user site-packages directory is under normal conditions always included
362in :data:`sys.path` (see :mod:`site` for more information), which means that
363there is no additional step to perform after running the :file:`setup.py` script
364to finalize the installation.
365
366The :command:`build_ext` command also has a ``--user`` option to add
367:file:`{userbase}/include` to the compiler search path for header files and
368:file:`{userbase}/lib` to the compiler search path for libraries as well as to
369the runtime search path for shared C libraries (rpath).
370
371
372.. _inst-alt-install-home:
Georg Brandl116aa622007-08-15 14:28:22 +0000373
374Alternate installation: the home scheme
375---------------------------------------
376
377The idea behind the "home scheme" is that you build and maintain a personal
378stash of Python modules. This scheme's name is derived from the idea of a
379"home" directory on Unix, since it's not unusual for a Unix user to make their
380home directory have a layout similar to :file:`/usr/` or :file:`/usr/local/`.
Georg Brandlf6914aa2010-07-26 15:11:49 +0000381This scheme can be used by anyone, regardless of the operating system they
382are installing for.
Georg Brandl116aa622007-08-15 14:28:22 +0000383
384Installing a new module distribution is as simple as ::
385
386 python setup.py install --home=<dir>
387
388where you can supply any directory you like for the :option:`--home` option. On
389Unix, lazy typists can just type a tilde (``~``); the :command:`install` command
390will expand this to your home directory::
391
392 python setup.py install --home=~
393
Éric Araujo6ef038e2011-08-06 16:30:42 +0200394To make Python find the distributions installed with this scheme, you may have
395to :ref:`modify Python's search path <inst-search-path>` or edit
396:mod:`sitecustomize` (see :mod:`site`) to call :func:`site.addsitedir` or edit
397:data:`sys.path`.
398
Georg Brandl116aa622007-08-15 14:28:22 +0000399The :option:`--home` option defines the installation base directory. Files are
400installed to the following directories under the installation base as follows:
401
Éric Araujo6ef038e2011-08-06 16:30:42 +0200402=============== ===========================================================
403Type of file Installation directory
404=============== ===========================================================
405modules :file:`{home}/lib/python`
406scripts :file:`{home}/bin`
407data :file:`{home}`
408C headers :file:`{home}/include/python/{distname}`
409=============== ===========================================================
410
411(Mentally replace slashes with backslashes if you're on Windows.)
Georg Brandl116aa622007-08-15 14:28:22 +0000412
Georg Brandl116aa622007-08-15 14:28:22 +0000413
Éric Araujo6ef038e2011-08-06 16:30:42 +0200414.. _inst-alt-install-prefix-unix:
Georg Brandl116aa622007-08-15 14:28:22 +0000415
416Alternate installation: Unix (the prefix scheme)
417------------------------------------------------
418
419The "prefix scheme" is useful when you wish to use one Python installation to
420perform the build/install (i.e., to run the setup script), but install modules
421into the third-party module directory of a different Python installation (or
422something that looks like a different Python installation). If this sounds a
Éric Araujo6ef038e2011-08-06 16:30:42 +0200423trifle unusual, it is---that's why the user and home schemes come before. However,
Georg Brandl116aa622007-08-15 14:28:22 +0000424there are at least two known cases where the prefix scheme will be useful.
425
426First, consider that many Linux distributions put Python in :file:`/usr`, rather
427than the more traditional :file:`/usr/local`. This is entirely appropriate,
428since in those cases Python is part of "the system" rather than a local add-on.
429However, if you are installing Python modules from source, you probably want
430them to go in :file:`/usr/local/lib/python2.{X}` rather than
431:file:`/usr/lib/python2.{X}`. This can be done with ::
432
433 /usr/bin/python setup.py install --prefix=/usr/local
434
435Another possibility is a network filesystem where the name used to write to a
436remote directory is different from the name used to read it: for example, the
437Python interpreter accessed as :file:`/usr/local/bin/python` might search for
438modules in :file:`/usr/local/lib/python2.{X}`, but those modules would have to
439be installed to, say, :file:`/mnt/{@server}/export/lib/python2.{X}`. This could
440be done with ::
441
442 /usr/local/bin/python setup.py install --prefix=/mnt/@server/export
443
444In either case, the :option:`--prefix` option defines the installation base, and
445the :option:`--exec-prefix` option defines the platform-specific installation
446base, which is used for platform-specific files. (Currently, this just means
447non-pure module distributions, but could be expanded to C libraries, binary
448executables, etc.) If :option:`--exec-prefix` is not supplied, it defaults to
449:option:`--prefix`. Files are installed as follows:
450
Éric Araujo6ef038e2011-08-06 16:30:42 +0200451================= ==========================================================
452Type of file Installation directory
453================= ==========================================================
454Python modules :file:`{prefix}/lib/python{X.Y}/site-packages`
455extension modules :file:`{exec-prefix}/lib/python{X.Y}/site-packages`
456scripts :file:`{prefix}/bin`
457data :file:`{prefix}`
458C headers :file:`{prefix}/include/python{X.Y}{abiflags}/{distname}`
459================= ==========================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000460
461There is no requirement that :option:`--prefix` or :option:`--exec-prefix`
462actually point to an alternate Python installation; if the directories listed
463above do not already exist, they are created at installation time.
464
465Incidentally, the real reason the prefix scheme is important is simply that a
466standard Unix installation uses the prefix scheme, but with :option:`--prefix`
467and :option:`--exec-prefix` supplied by Python itself as ``sys.prefix`` and
468``sys.exec_prefix``. Thus, you might think you'll never use the prefix scheme,
469but every time you run ``python setup.py install`` without any other options,
470you're using it.
471
472Note that installing extensions to an alternate Python installation has no
473effect on how those extensions are built: in particular, the Python header files
474(:file:`Python.h` and friends) installed with the Python interpreter used to run
475the setup script will be used in compiling extensions. It is your
476responsibility to ensure that the interpreter used to run extensions installed
477in this way is compatible with the interpreter used to build them. The best way
478to do this is to ensure that the two interpreters are the same version of Python
479(possibly different builds, or possibly copies of the same build). (Of course,
480if your :option:`--prefix` and :option:`--exec-prefix` don't even point to an
481alternate Python installation, this is immaterial.)
482
483
Éric Araujo6ef038e2011-08-06 16:30:42 +0200484.. _inst-alt-install-prefix-windows:
Georg Brandl116aa622007-08-15 14:28:22 +0000485
486Alternate installation: Windows (the prefix scheme)
487---------------------------------------------------
488
489Windows has no concept of a user's home directory, and since the standard Python
490installation under Windows is simpler than under Unix, the :option:`--prefix`
491option has traditionally been used to install additional packages in separate
492locations on Windows. ::
493
494 python setup.py install --prefix="\Temp\Python"
495
496to install modules to the :file:`\\Temp\\Python` directory on the current drive.
497
498The installation base is defined by the :option:`--prefix` option; the
Éric Araujo6ef038e2011-08-06 16:30:42 +0200499:option:`--exec-prefix` option is not supported under Windows, which means that
500pure Python modules and extension modules are installed into the same location.
501Files are installed as follows:
Georg Brandl116aa622007-08-15 14:28:22 +0000502
Éric Araujo6ef038e2011-08-06 16:30:42 +0200503=============== ==========================================================
504Type of file Installation directory
505=============== ==========================================================
506modules :file:`{prefix}\\Lib\\site-packages`
507scripts :file:`{prefix}\\Scripts`
508data :file:`{prefix}`
509C headers :file:`{prefix}\\Include\\{distname}`
510=============== ==========================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000511
512
513.. _inst-custom-install:
514
515Custom Installation
516===================
517
518Sometimes, the alternate installation schemes described in section
519:ref:`inst-alt-install` just don't do what you want. You might want to tweak just
520one or two directories while keeping everything under the same base directory,
521or you might want to completely redefine the installation scheme. In either
522case, you're creating a *custom installation scheme*.
523
Éric Araujo6ef038e2011-08-06 16:30:42 +0200524To create a custom installation scheme, you start with one of the alternate
525schemes and override some of the installation directories used for the various
526types of files, using these options:
527
528====================== =======================
529Type of file Override option
530====================== =======================
531Python modules ``--install-purelib``
532extension modules ``--install-platlib``
533all modules ``--install-lib``
534scripts ``--install-scripts``
535data ``--install-data``
536C headers ``--install-headers``
537====================== =======================
538
539These override options can be relative, absolute,
Georg Brandl116aa622007-08-15 14:28:22 +0000540or explicitly defined in terms of one of the installation base directories.
541(There are two installation base directories, and they are normally the same---
542they only differ when you use the Unix "prefix scheme" and supply different
Éric Araujo6ef038e2011-08-06 16:30:42 +0200543``--prefix`` and ``--exec-prefix`` options; using ``--install-lib`` will
544override values computed or given for ``--install-purelib`` and
545``--install-platlib``, and is recommended for schemes that don't make a
546difference between Python and extension modules.)
Georg Brandl116aa622007-08-15 14:28:22 +0000547
548For example, say you're installing a module distribution to your home directory
549under Unix---but you want scripts to go in :file:`~/scripts` rather than
550:file:`~/bin`. As you might expect, you can override this directory with the
551:option:`--install-scripts` option; in this case, it makes most sense to supply
552a relative path, which will be interpreted relative to the installation base
553directory (your home directory, in this case)::
554
555 python setup.py install --home=~ --install-scripts=scripts
556
557Another Unix example: suppose your Python installation was built and installed
558with a prefix of :file:`/usr/local/python`, so under a standard installation
559scripts will wind up in :file:`/usr/local/python/bin`. If you want them in
560:file:`/usr/local/bin` instead, you would supply this absolute directory for the
561:option:`--install-scripts` option::
562
563 python setup.py install --install-scripts=/usr/local/bin
564
565(This performs an installation using the "prefix scheme," where the prefix is
566whatever your Python interpreter was installed with--- :file:`/usr/local/python`
567in this case.)
568
569If you maintain Python on Windows, you might want third-party modules to live in
570a subdirectory of :file:`{prefix}`, rather than right in :file:`{prefix}`
571itself. This is almost as easy as customizing the script installation directory
572---you just have to remember that there are two types of modules to worry about,
Éric Araujo6ef038e2011-08-06 16:30:42 +0200573Python and extension modules, which can conveniently be both controlled by one
574option::
Georg Brandl116aa622007-08-15 14:28:22 +0000575
Éric Araujo6ef038e2011-08-06 16:30:42 +0200576 python setup.py install --install-lib=Site
Georg Brandl116aa622007-08-15 14:28:22 +0000577
Éric Araujo6ef038e2011-08-06 16:30:42 +0200578The specified installation directory is relative to :file:`{prefix}`. Of
579course, you also have to ensure that this directory is in Python's module
580search path, such as by putting a :file:`.pth` file in a site directory (see
581:mod:`site`). See section :ref:`inst-search-path` to find out how to modify
582Python's search path.
Georg Brandl116aa622007-08-15 14:28:22 +0000583
584If you want to define an entire installation scheme, you just have to supply all
585of the installation directory options. The recommended way to do this is to
586supply relative paths; for example, if you want to maintain all Python
587module-related files under :file:`python` in your home directory, and you want a
588separate directory for each platform that you use your home directory from, you
589might define the following installation scheme::
590
591 python setup.py install --home=~ \
592 --install-purelib=python/lib \
593 --install-platlib=python/lib.$PLAT \
594 --install-scripts=python/scripts
595 --install-data=python/data
596
Georg Brandl81ac1ce2007-08-31 17:17:17 +0000597or, equivalently, ::
Georg Brandl116aa622007-08-15 14:28:22 +0000598
599 python setup.py install --home=~/python \
600 --install-purelib=lib \
601 --install-platlib='lib.$PLAT' \
602 --install-scripts=scripts
603 --install-data=data
604
605``$PLAT`` is not (necessarily) an environment variable---it will be expanded by
606the Distutils as it parses your command line options, just as it does when
607parsing your configuration file(s).
608
Georg Brandl116aa622007-08-15 14:28:22 +0000609Obviously, specifying the entire installation scheme every time you install a
610new module distribution would be very tedious. Thus, you can put these options
611into your Distutils config file (see section :ref:`inst-config-files`)::
612
613 [install]
614 install-base=$HOME
615 install-purelib=python/lib
616 install-platlib=python/lib.$PLAT
617 install-scripts=python/scripts
618 install-data=python/data
619
620or, equivalently, ::
621
622 [install]
623 install-base=$HOME/python
624 install-purelib=lib
625 install-platlib=lib.$PLAT
626 install-scripts=scripts
627 install-data=data
628
629Note that these two are *not* equivalent if you supply a different installation
630base directory when you run the setup script. For example, ::
631
632 python setup.py install --install-base=/tmp
633
Éric Araujo6ef038e2011-08-06 16:30:42 +0200634would install pure modules to :file:`/tmp/python/lib` in the first case, and
635to :file:`/tmp/lib` in the second case. (For the second case, you probably
Georg Brandl116aa622007-08-15 14:28:22 +0000636want to supply an installation base of :file:`/tmp/python`.)
637
638You probably noticed the use of ``$HOME`` and ``$PLAT`` in the sample
639configuration file input. These are Distutils configuration variables, which
640bear a strong resemblance to environment variables. In fact, you can use
641environment variables in config files on platforms that have such a notion but
642the Distutils additionally define a few extra variables that may not be in your
643environment, such as ``$PLAT``. (And of course, on systems that don't have
644environment variables, such as Mac OS 9, the configuration variables supplied by
645the Distutils are the only ones you can use.) See section :ref:`inst-config-files`
646for details.
647
Georg Brandl521ed522013-05-12 12:36:07 +0200648.. note:: When a :ref:`virtual environment <venv-def>` is activated, any options
649 that change the installation path will be ignored from all distutils configuration
650 files to prevent inadvertently installing projects outside of the virtual
651 environment.
652
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000653.. XXX need some Windows examples---when would custom installation schemes be
654 needed on those platforms?
Georg Brandl116aa622007-08-15 14:28:22 +0000655
Georg Brandl116aa622007-08-15 14:28:22 +0000656
Éric Araujo6ef038e2011-08-06 16:30:42 +0200657.. XXX Move this to Doc/using
Georg Brandl116aa622007-08-15 14:28:22 +0000658
659.. _inst-search-path:
660
661Modifying Python's Search Path
662------------------------------
663
664When the Python interpreter executes an :keyword:`import` statement, it searches
665for both Python code and extension modules along a search path. A default value
666for the path is configured into the Python binary when the interpreter is built.
667You can determine the path by importing the :mod:`sys` module and printing the
668value of ``sys.path``. ::
669
670 $ python
671 Python 2.2 (#11, Oct 3 2002, 13:31:27)
672 [GCC 2.96 20000731 (Red Hat Linux 7.3 2.96-112)] on linux2
Georg Brandl1f01deb2009-01-03 22:47:39 +0000673 Type "help", "copyright", "credits" or "license" for more information.
Georg Brandl116aa622007-08-15 14:28:22 +0000674 >>> import sys
675 >>> sys.path
Georg Brandl48310cd2009-01-03 21:18:54 +0000676 ['', '/usr/local/lib/python2.3', '/usr/local/lib/python2.3/plat-linux2',
677 '/usr/local/lib/python2.3/lib-tk', '/usr/local/lib/python2.3/lib-dynload',
Georg Brandl116aa622007-08-15 14:28:22 +0000678 '/usr/local/lib/python2.3/site-packages']
679 >>>
680
681The null string in ``sys.path`` represents the current working directory.
682
Georg Brandl116aa622007-08-15 14:28:22 +0000683The expected convention for locally installed packages is to put them in the
684:file:`{...}/site-packages/` directory, but you may want to install Python
685modules into some arbitrary directory. For example, your site may have a
686convention of keeping all software related to the web server under :file:`/www`.
687Add-on Python modules might then belong in :file:`/www/python`, and in order to
688import them, this directory must be added to ``sys.path``. There are several
689different ways to add the directory.
690
691The most convenient way is to add a path configuration file to a directory
692that's already on Python's path, usually to the :file:`.../site-packages/`
693directory. Path configuration files have an extension of :file:`.pth`, and each
694line must contain a single path that will be appended to ``sys.path``. (Because
695the new paths are appended to ``sys.path``, modules in the added directories
696will not override standard modules. This means you can't use this mechanism for
697installing fixed versions of standard modules.)
698
699Paths can be absolute or relative, in which case they're relative to the
Christian Heimes9cd17752007-11-18 19:35:23 +0000700directory containing the :file:`.pth` file. See the documentation of
Thomas Woutersed03b412007-08-28 21:37:11 +0000701the :mod:`site` module for more information.
Georg Brandl116aa622007-08-15 14:28:22 +0000702
703A slightly less convenient way is to edit the :file:`site.py` file in Python's
704standard library, and modify ``sys.path``. :file:`site.py` is automatically
705imported when the Python interpreter is executed, unless the :option:`-S` switch
706is supplied to suppress this behaviour. So you could simply edit
707:file:`site.py` and add two lines to it::
708
709 import sys
710 sys.path.append('/www/python/')
711
712However, if you reinstall the same major version of Python (perhaps when
713upgrading from 2.2 to 2.2.2, for example) :file:`site.py` will be overwritten by
714the stock version. You'd have to remember that it was modified and save a copy
715before doing the installation.
716
717There are two environment variables that can modify ``sys.path``.
718:envvar:`PYTHONHOME` sets an alternate value for the prefix of the Python
719installation. For example, if :envvar:`PYTHONHOME` is set to ``/www/python``,
720the search path will be set to ``['', '/www/python/lib/pythonX.Y/',
721'/www/python/lib/pythonX.Y/plat-linux2', ...]``.
722
723The :envvar:`PYTHONPATH` variable can be set to a list of paths that will be
724added to the beginning of ``sys.path``. For example, if :envvar:`PYTHONPATH` is
725set to ``/www/python:/opt/py``, the search path will begin with
726``['/www/python', '/opt/py']``. (Note that directories must exist in order to
727be added to ``sys.path``; the :mod:`site` module removes paths that don't
728exist.)
729
730Finally, ``sys.path`` is just a regular Python list, so any Python application
731can modify it by adding or removing entries.
732
733
734.. _inst-config-files:
735
736Distutils Configuration Files
737=============================
738
739As mentioned above, you can use Distutils configuration files to record personal
740or site preferences for any Distutils options. That is, any option to any
741command can be stored in one of two or three (depending on your platform)
742configuration files, which will be consulted before the command-line is parsed.
743This means that configuration files will override default values, and the
744command-line will in turn override configuration files. Furthermore, if
745multiple configuration files apply, values from "earlier" files are overridden
746by "later" files.
747
748
749.. _inst-config-filenames:
750
751Location and names of config files
752----------------------------------
753
754The names and locations of the configuration files vary slightly across
755platforms. On Unix and Mac OS X, the three configuration files (in the order
756they are processed) are:
757
758+--------------+----------------------------------------------------------+-------+
759| Type of file | Location and filename | Notes |
760+==============+==========================================================+=======+
761| system | :file:`{prefix}/lib/python{ver}/distutils/distutils.cfg` | \(1) |
762+--------------+----------------------------------------------------------+-------+
763| personal | :file:`$HOME/.pydistutils.cfg` | \(2) |
764+--------------+----------------------------------------------------------+-------+
765| local | :file:`setup.cfg` | \(3) |
766+--------------+----------------------------------------------------------+-------+
767
768And on Windows, the configuration files are:
769
770+--------------+-------------------------------------------------+-------+
771| Type of file | Location and filename | Notes |
772+==============+=================================================+=======+
773| system | :file:`{prefix}\\Lib\\distutils\\distutils.cfg` | \(4) |
774+--------------+-------------------------------------------------+-------+
775| personal | :file:`%HOME%\\pydistutils.cfg` | \(5) |
776+--------------+-------------------------------------------------+-------+
777| local | :file:`setup.cfg` | \(3) |
778+--------------+-------------------------------------------------+-------+
779
Tarek Ziadéc7c71ff2009-10-27 23:12:01 +0000780On all platforms, the "personal" file can be temporarily disabled by
781passing the `--no-user-cfg` option.
782
Georg Brandl116aa622007-08-15 14:28:22 +0000783Notes:
784
785(1)
786 Strictly speaking, the system-wide configuration file lives in the directory
787 where the Distutils are installed; under Python 1.6 and later on Unix, this is
788 as shown. For Python 1.5.2, the Distutils will normally be installed to
789 :file:`{prefix}/lib/python1.5/site-packages/distutils`, so the system
790 configuration file should be put there under Python 1.5.2.
791
792(2)
793 On Unix, if the :envvar:`HOME` environment variable is not defined, the user's
794 home directory will be determined with the :func:`getpwuid` function from the
Tarek Ziadéf3b33222009-08-21 14:22:45 +0000795 standard :mod:`pwd` module. This is done by the :func:`os.path.expanduser`
796 function used by Distutils.
Georg Brandl116aa622007-08-15 14:28:22 +0000797
798(3)
799 I.e., in the current directory (usually the location of the setup script).
800
801(4)
802 (See also note (1).) Under Python 1.6 and later, Python's default "installation
803 prefix" is :file:`C:\\Python`, so the system configuration file is normally
804 :file:`C:\\Python\\Lib\\distutils\\distutils.cfg`. Under Python 1.5.2, the
805 default prefix was :file:`C:\\Program Files\\Python`, and the Distutils were not
806 part of the standard library---so the system configuration file would be
807 :file:`C:\\Program Files\\Python\\distutils\\distutils.cfg` in a standard Python
808 1.5.2 installation under Windows.
809
810(5)
Tarek Ziadéf3b33222009-08-21 14:22:45 +0000811 On Windows, if the :envvar:`HOME` environment variable is not defined,
812 :envvar:`USERPROFILE` then :envvar:`HOMEDRIVE` and :envvar:`HOMEPATH` will
813 be tried. This is done by the :func:`os.path.expanduser` function used
814 by Distutils.
Georg Brandl116aa622007-08-15 14:28:22 +0000815
816
817.. _inst-config-syntax:
818
819Syntax of config files
820----------------------
821
822The Distutils configuration files all have the same syntax. The config files
823are grouped into sections. There is one section for each Distutils command,
824plus a ``global`` section for global options that affect every command. Each
825section consists of one option per line, specified as ``option=value``.
826
827For example, the following is a complete config file that just forces all
828commands to run quietly by default::
829
830 [global]
831 verbose=0
832
833If this is installed as the system config file, it will affect all processing of
834any Python module distribution by any user on the current system. If it is
835installed as your personal config file (on systems that support them), it will
836affect only module distributions processed by you. And if it is used as the
837:file:`setup.cfg` for a particular module distribution, it affects only that
838distribution.
839
840You could override the default "build base" directory and make the
841:command:`build\*` commands always forcibly rebuild all files with the
842following::
843
844 [build]
845 build-base=blib
846 force=1
847
848which corresponds to the command-line arguments ::
849
850 python setup.py build --build-base=blib --force
851
852except that including the :command:`build` command on the command-line means
853that command will be run. Including a particular command in config files has no
854such implication; it only means that if the command is run, the options in the
855config file will apply. (Or if other commands that derive values from it are
856run, they will use the values in the config file.)
857
858You can find out the complete list of options for any command using the
859:option:`--help` option, e.g.::
860
861 python setup.py build --help
862
863and you can find out the complete list of global options by using
864:option:`--help` without a command::
865
866 python setup.py --help
867
868See also the "Reference" section of the "Distributing Python Modules" manual.
869
870
871.. _inst-building-ext:
872
873Building Extensions: Tips and Tricks
874====================================
875
876Whenever possible, the Distutils try to use the configuration information made
877available by the Python interpreter used to run the :file:`setup.py` script.
878For example, the same compiler and linker flags used to compile Python will also
879be used for compiling extensions. Usually this will work well, but in
880complicated situations this might be inappropriate. This section discusses how
881to override the usual Distutils behaviour.
882
883
884.. _inst-tweak-flags:
885
886Tweaking compiler/linker flags
887------------------------------
888
889Compiling a Python extension written in C or C++ will sometimes require
890specifying custom flags for the compiler and linker in order to use a particular
891library or produce a special kind of object code. This is especially true if the
892extension hasn't been tested on your platform, or if you're trying to
893cross-compile Python.
894
895In the most general case, the extension author might have foreseen that
896compiling the extensions would be complicated, and provided a :file:`Setup` file
897for you to edit. This will likely only be done if the module distribution
898contains many separate extension modules, or if they often require elaborate
899sets of compiler flags in order to work.
900
901A :file:`Setup` file, if present, is parsed in order to get a list of extensions
902to build. Each line in a :file:`Setup` describes a single module. Lines have
903the following structure::
904
905 module ... [sourcefile ...] [cpparg ...] [library ...]
906
907
908Let's examine each of the fields in turn.
909
910* *module* is the name of the extension module to be built, and should be a
911 valid Python identifier. You can't just change this in order to rename a module
912 (edits to the source code would also be needed), so this should be left alone.
913
914* *sourcefile* is anything that's likely to be a source code file, at least
915 judging by the filename. Filenames ending in :file:`.c` are assumed to be
916 written in C, filenames ending in :file:`.C`, :file:`.cc`, and :file:`.c++` are
917 assumed to be C++, and filenames ending in :file:`.m` or :file:`.mm` are assumed
918 to be in Objective C.
919
920* *cpparg* is an argument for the C preprocessor, and is anything starting with
921 :option:`-I`, :option:`-D`, :option:`-U` or :option:`-C`.
922
923* *library* is anything ending in :file:`.a` or beginning with :option:`-l` or
924 :option:`-L`.
925
926If a particular platform requires a special library on your platform, you can
927add it by editing the :file:`Setup` file and running ``python setup.py build``.
928For example, if the module defined by the line ::
929
930 foo foomodule.c
931
932must be linked with the math library :file:`libm.a` on your platform, simply add
933:option:`-lm` to the line::
934
935 foo foomodule.c -lm
936
937Arbitrary switches intended for the compiler or the linker can be supplied with
938the :option:`-Xcompiler` *arg* and :option:`-Xlinker` *arg* options::
939
940 foo foomodule.c -Xcompiler -o32 -Xlinker -shared -lm
941
942The next option after :option:`-Xcompiler` and :option:`-Xlinker` will be
943appended to the proper command line, so in the above example the compiler will
944be passed the :option:`-o32` option, and the linker will be passed
945:option:`-shared`. If a compiler option requires an argument, you'll have to
946supply multiple :option:`-Xcompiler` options; for example, to pass ``-x c++``
947the :file:`Setup` file would have to contain ``-Xcompiler -x -Xcompiler c++``.
948
949Compiler flags can also be supplied through setting the :envvar:`CFLAGS`
950environment variable. If set, the contents of :envvar:`CFLAGS` will be added to
951the compiler flags specified in the :file:`Setup` file.
952
953
954.. _inst-non-ms-compilers:
955
956Using non-Microsoft compilers on Windows
957----------------------------------------
958
959.. sectionauthor:: Rene Liebscher <R.Liebscher@gmx.de>
960
961
962
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000963Borland/CodeGear C++
964^^^^^^^^^^^^^^^^^^^^
Georg Brandl116aa622007-08-15 14:28:22 +0000965
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000966This subsection describes the necessary steps to use Distutils with the Borland
Georg Brandl116aa622007-08-15 14:28:22 +0000967C++ compiler version 5.5. First you have to know that Borland's object file
968format (OMF) is different from the format used by the Python version you can
969download from the Python or ActiveState Web site. (Python is built with
970Microsoft Visual C++, which uses COFF as the object file format.) For this
971reason you have to convert Python's library :file:`python25.lib` into the
972Borland format. You can do this as follows:
973
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000974.. Should we mention that users have to create cfg-files for the compiler?
975.. see also http://community.borland.com/article/0,1410,21205,00.html
Georg Brandl116aa622007-08-15 14:28:22 +0000976
977::
978
979 coff2omf python25.lib python25_bcpp.lib
980
981The :file:`coff2omf` program comes with the Borland compiler. The file
982:file:`python25.lib` is in the :file:`Libs` directory of your Python
983installation. If your extension uses other libraries (zlib, ...) you have to
984convert them too.
985
986The converted files have to reside in the same directories as the normal
987libraries.
988
989How does Distutils manage to use these libraries with their changed names? If
990the extension needs a library (eg. :file:`foo`) Distutils checks first if it
991finds a library with suffix :file:`_bcpp` (eg. :file:`foo_bcpp.lib`) and then
992uses this library. In the case it doesn't find such a special library it uses
993the default name (:file:`foo.lib`.) [#]_
994
995To let Distutils compile your extension with Borland C++ you now have to type::
996
997 python setup.py build --compiler=bcpp
998
999If you want to use the Borland C++ compiler as the default, you could specify
1000this in your personal or system-wide configuration file for Distutils (see
1001section :ref:`inst-config-files`.)
1002
1003
1004.. seealso::
1005
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001006 `C++Builder Compiler <http://www.codegear.com/downloads/free/cppbuilder>`_
Georg Brandl116aa622007-08-15 14:28:22 +00001007 Information about the free C++ compiler from Borland, including links to the
1008 download pages.
1009
1010 `Creating Python Extensions Using Borland's Free Compiler <http://www.cyberus.ca/~g_will/pyExtenDL.shtml>`_
1011 Document describing how to use Borland's free command-line C++ compiler to build
1012 Python.
1013
1014
1015GNU C / Cygwin / MinGW
1016^^^^^^^^^^^^^^^^^^^^^^
1017
Georg Brandl116aa622007-08-15 14:28:22 +00001018This section describes the necessary steps to use Distutils with the GNU C/C++
1019compilers in their Cygwin and MinGW distributions. [#]_ For a Python interpreter
1020that was built with Cygwin, everything should work without any of these
1021following steps.
1022
Éric Araujo2d6bb122010-12-15 22:06:35 +00001023Not all extensions can be built with MinGW or Cygwin, but many can. Extensions
1024most likely to not work are those that use C++ or depend on Microsoft Visual C
1025extensions.
1026
1027To let Distutils compile your extension with Cygwin you have to type::
1028
1029 python setup.py build --compiler=cygwin
1030
1031and for Cygwin in no-cygwin mode [#]_ or for MinGW type::
1032
1033 python setup.py build --compiler=mingw32
1034
1035If you want to use any of these options/compilers as default, you should
1036consider writing it in your personal or system-wide configuration file for
1037Distutils (see section :ref:`inst-config-files`.)
1038
1039Older Versions of Python and MinGW
1040""""""""""""""""""""""""""""""""""
1041The following instructions only apply if you're using a version of Python
1042inferior to 2.4.1 with a MinGW inferior to 3.0.0 (with
1043binutils-2.13.90-20030111-1).
1044
1045These compilers require some special libraries. This task is more complex than
Georg Brandl116aa622007-08-15 14:28:22 +00001046for Borland's C++, because there is no program to convert the library. First
1047you have to create a list of symbols which the Python DLL exports. (You can find
Georg Brandl495f7b52009-10-27 15:28:25 +00001048a good program for this task at
Georg Brandl1cef2642013-10-06 13:20:49 +02001049http://sourceforge.net/projects/mingw/files/MinGW/Extension/pexports/).
Georg Brandl116aa622007-08-15 14:28:22 +00001050
Christian Heimes5b5e81c2007-12-31 16:14:33 +00001051.. I don't understand what the next line means. --amk
1052.. (inclusive the references on data structures.)
Georg Brandl116aa622007-08-15 14:28:22 +00001053
1054::
1055
1056 pexports python25.dll >python25.def
1057
1058The location of an installed :file:`python25.dll` will depend on the
1059installation options and the version and language of Windows. In a "just for
1060me" installation, it will appear in the root of the installation directory. In
1061a shared installation, it will be located in the system directory.
1062
1063Then you can create from these information an import library for gcc. ::
1064
1065 /cygwin/bin/dlltool --dllname python25.dll --def python25.def --output-lib libpython25.a
1066
1067The resulting library has to be placed in the same directory as
1068:file:`python25.lib`. (Should be the :file:`libs` directory under your Python
1069installation directory.)
1070
1071If your extension uses other libraries (zlib,...) you might have to convert
1072them too. The converted files have to reside in the same directories as the
1073normal libraries do.
1074
Georg Brandl116aa622007-08-15 14:28:22 +00001075
1076.. seealso::
1077
1078 `Building Python modules on MS Windows platform with MinGW <http://www.zope.org/Members/als/tips/win32_mingw_modules>`_
1079 Information about building the required libraries for the MinGW environment.
1080
Georg Brandl116aa622007-08-15 14:28:22 +00001081
1082.. rubric:: Footnotes
1083
1084.. [#] This also means you could replace all existing COFF-libraries with OMF-libraries
1085 of the same name.
1086
1087.. [#] Check http://sources.redhat.com/cygwin/ and http://www.mingw.org/ for more
1088 information
1089
1090.. [#] Then you have no POSIX emulation available, but you also don't need
1091 :file:`cygwin1.dll`.