blob: 948753a32e900146a134afe7fdb8fbec04a4abb4 [file] [log] [blame]
Christian Heimesd8654cf2007-12-02 15:22:16 +00001.. highlightlang:: none
2
3.. _using-on-windows:
4
5*************************
6 Using Python on Windows
7*************************
8
9.. sectionauthor:: Robert Lehmann <lehmannro@gmail.com>
10
11This document aims to give an overview of Windows-specific behaviour you should
12know about when using Python on Microsoft Windows.
13
14
15Installing Python
16=================
17
18Unlike most Unix systems and services, Windows does not require Python natively
19and thus does not pre-install a version of Python. However, the CPython team
20has compiled Windows installers (MSI packages) with every `release
21<http://www.python.org/download/releases/>`_ for many years.
22
23With ongoing development of Python, some platforms that used to be supported
Christian Heimes380f7f22008-02-28 11:19:05 +000024earlier are no longer supported (due to the lack of users or developers).
Christian Heimesd8654cf2007-12-02 15:22:16 +000025Check :pep:`11` for details on all unsupported platforms.
26
Christian Heimesd8654cf2007-12-02 15:22:16 +000027* Up to 2.5, Python was still compatible with Windows 95, 98 and ME (but already
28 raised a deprecation warning on installation). For Python 2.6 (and all
29 following releases), this support was dropped and new releases are just
30 expected to work on the Windows NT family.
31* `Windows CE <http://pythonce.sourceforge.net/>`_ is still supported.
32* The `Cygwin <http://cygwin.com/>`_ installer offers to install the `Python
33 interpreter <http://cygwin.com/packages/python>`_ as well; it is located under
34 "Interpreters." (cf. `Cygwin package source
35 <ftp://ftp.uni-erlangen.de/pub/pc/gnuwin32/cygwin/mirrors/cygnus/
36 release/python>`_, `Maintainer releases
37 <http://www.tishler.net/jason/software/python/>`_)
38
39See `Python for Windows (and DOS) <http://www.python.org/download/windows/>`_
40for detailed information about platforms with precompiled installers.
41
42.. seealso::
43
44 `Python on XP <http://www.richarddooling.com/index.php/2006/03/14/python-on-xp-7-minutes-to-hello-world/>`_
45 "7 Minutes to "Hello World!""
46 by Richard Dooling, 2006
47
48 `Installing on Windows <http://diveintopython.org/installing_python/windows.html>`_
49 in "`Dive into Python: Python from novice to pro
50 <http://diveintopython.org/index.html>`_"
51 by Mark Pilgrim, 2004,
52 ISBN 1-59059-356-1
53
54 `For Windows users <http://swaroopch.com/text/Byte_of_Python:Installing_Python#For_Windows_users>`_
55 in "Installing Python"
56 in "`A Byte of Python <http://www.byteofpython.info>`_"
57 by Swaroop C H, 2003
58
59
60Alternative bundles
61===================
62
63Besides the standard CPython distribution, there are modified packages including
64additional functionality. The following is a list of popular versions and their
65key features:
66
67`ActivePython <http://www.activestate.com/Products/activepython/>`_
68 Installer with multi-platform compatibility, documentation, PyWin32
69
Georg Brandl495f7b52009-10-27 15:28:25 +000070`Enthought Python Distribution <http://www.enthought.com/products/epd.php>`_
Christian Heimesd8654cf2007-12-02 15:22:16 +000071 Popular modules (such as PyWin32) with their respective documentation, tool
Ezio Melotti0639d5a2009-12-19 23:26:38 +000072 suite for building extensible Python applications
Christian Heimesd8654cf2007-12-02 15:22:16 +000073
Christian Heimes255f53b2007-12-08 15:33:56 +000074Notice that these packages are likely to install *older* versions of Python.
75
Christian Heimesd8654cf2007-12-02 15:22:16 +000076
77
78Configuring Python
79==================
80
81In order to run Python flawlessly, you might have to change certain environment
82settings in Windows.
83
84
85Excursus: Setting environment variables
86---------------------------------------
87
Christian Heimes255f53b2007-12-08 15:33:56 +000088Windows has a built-in dialog for changing environment variables (following
Georg Brandl48310cd2009-01-03 21:18:54 +000089guide applies to XP classical view): Right-click the icon for your machine
90(usually located on your Desktop and called "My Computer") and choose
91:menuselection:`Properties` there. Then, open the :guilabel:`Advanced` tab
Christian Heimes255f53b2007-12-08 15:33:56 +000092and click the :guilabel:`Environment Variables` button.
Christian Heimesd8654cf2007-12-02 15:22:16 +000093
94In short, your path is:
95
96 :menuselection:`My Computer
97 --> Properties
98 --> Advanced
99 --> Environment Variables`
100
101In this dialog, you can add or modify User and System variables. To change
102System variables, you need non-restricted access to your machine
103(i.e. Administrator rights).
104
105Another way of adding variables to your environment is using the :command:`set`
106command::
107
108 set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
109
110To make this setting permanent, you could add the corresponding command line to
Christian Heimes255f53b2007-12-08 15:33:56 +0000111your :file:`autoexec.bat`. :program:`msconfig` is a graphical interface to this
112file.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000113
114Viewing environment variables can also be done more straight-forward: The
115command prompt will expand strings wrapped into percent signs automatically::
116
117 echo %PATH%
118
119Consult :command:`set /?` for details on this behaviour.
120
121.. seealso::
122
123 http://support.microsoft.com/kb/100843
124 Environment variables in Windows NT
125
126 http://support.microsoft.com/kb/310519
127 How To Manage Environment Variables in Windows XP
128
Christian Heimes255f53b2007-12-08 15:33:56 +0000129 http://www.chem.gla.ac.uk/~louis/software/faq/q1.html
130 Setting Environment variables, Louis J. Farrugia
131
Christian Heimesd8654cf2007-12-02 15:22:16 +0000132
133Finding the Python executable
134-----------------------------
135
136Besides using the automatically created start menu entry for the Python
137interpreter, you might want to start Python in the DOS prompt. To make this
138work, you need to set your :envvar:`%PATH%` environment variable to include the
139directory of your Python distribution, delimited by a semicolon from other
140entries. An example variable could look like this (assuming the first two
141entries are Windows' default)::
142
Benjamin Peterson9bc93512008-09-22 22:10:59 +0000143 C:\WINDOWS\system32;C:\WINDOWS;C:\Python25
Christian Heimesd8654cf2007-12-02 15:22:16 +0000144
145Typing :command:`python` on your command prompt will now fire up the Python
146interpreter. Thus, you can also execute your scripts with command line options,
147see :ref:`using-on-cmdline` documentation.
148
149
150Finding modules
151---------------
152
153Python usually stores its library (and thereby your site-packages folder) in the
154installation directory. So, if you had installed Python to
155:file:`C:\\Python\\`, the default library would reside in
156:file:`C:\\Python\\Lib\\` and third-party modules should be stored in
157:file:`C:\\Python\\Lib\\site-packages\\`.
158
Georg Brandl7306ad52010-10-17 10:05:13 +0000159This is how :data:`sys.path` is populated on Windows:
Christian Heimesd8654cf2007-12-02 15:22:16 +0000160
Georg Brandl7306ad52010-10-17 10:05:13 +0000161* An empty entry is added at the start, which corresponds to the current
162 directory.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000163
Georg Brandl7306ad52010-10-17 10:05:13 +0000164* If the environment variable :envvar:`PYTHONPATH` exists, as described in
165 :ref:`using-on-envvars`, its entries are added next. Note that on Windows,
166 paths in this variable must be separated by semicolons, to distinguish them
167 from the colon used in drive identifiers (``C:\`` etc.).
Christian Heimesd8654cf2007-12-02 15:22:16 +0000168
Georg Brandl7306ad52010-10-17 10:05:13 +0000169* Additional "application paths" can be added in the registry as subkeys of
170 :samp:`\\SOFTWARE\\Python\\PythonCore\\{version}\\PythonPath` under both the
171 ``HKEY_CURRENT_USER`` and ``HKEY_LOCAL_MACHINE`` hives. Subkeys which have
172 semicolon-delimited path strings as their default value will cause each path
173 to be added to :data:`sys.path`. (Note that all known installers only use
174 HKLM, so HKCU is typically empty.)
175
176* If the environment variable :envvar:`PYTHONHOME` is set, it is assumed as
177 "Python Home". Otherwise, the path of the main Python executable is used to
178 locate a "landmark file" (``Lib\os.py``) to deduce the "Python Home". If a
179 Python home is found, the relevant sub-directories added to :data:`sys.path`
180 (``Lib``, ``plat-win``, etc) are based on that folder. Otherwise, the core
181 Python path is constructed from the PythonPath stored in the registry.
182
183* If the Python Home cannot be located, no :envvar:`PYTHONPATH` is specified in
184 the environment, and no registry entries can be found, a default path with
185 relative entries is used (e.g. ``.\Lib;.\plat-win``, etc).
186
187The end result of all this is:
188
189* When running :file:`python.exe`, or any other .exe in the main Python
190 directory (either an installed version, or directly from the PCbuild
191 directory), the core path is deduced, and the core paths in the registry are
192 ignored. Other "application paths" in the registry are always read.
193
194* When Python is hosted in another .exe (different directory, embedded via COM,
195 etc), the "Python Home" will not be deduced, so the core path from the
196 registry is used. Other "application paths" in the registry are always read.
197
198* If Python can't find its home and there is no registry (eg, frozen .exe, some
199 very strange installation setup) you get a path with some default, but
200 relative, paths.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000201
202
203Executing scripts
204-----------------
205
206Python scripts (files with the extension ``.py``) will be executed by
207:program:`python.exe` by default. This executable opens a terminal, which stays
208open even if the program uses a GUI. If you do not want this to happen, use the
209extension ``.pyw`` which will cause the script to be executed by
210:program:`pythonw.exe` by default (both executables are located in the top-level
211of your Python installation directory). This suppresses the terminal window on
212startup.
213
214You can also make all ``.py`` scripts execute with :program:`pythonw.exe`,
Georg Brandl2ee470f2008-07-16 12:55:28 +0000215setting this through the usual facilities, for example (might require
Christian Heimes2380ac72008-01-09 00:17:24 +0000216administrative rights):
Christian Heimesd8654cf2007-12-02 15:22:16 +0000217
Christian Heimes2380ac72008-01-09 00:17:24 +0000218#. Launch a command prompt.
219#. Associate the correct file group with ``.py`` scripts::
Georg Brandl48310cd2009-01-03 21:18:54 +0000220
Christian Heimes2380ac72008-01-09 00:17:24 +0000221 assoc .py=Python.File
Christian Heimesd8654cf2007-12-02 15:22:16 +0000222
Christian Heimes2380ac72008-01-09 00:17:24 +0000223#. Redirect all Python files to the new executable::
Georg Brandl48310cd2009-01-03 21:18:54 +0000224
Christian Heimes2380ac72008-01-09 00:17:24 +0000225 ftype Python.File=C:\Path\to\pythonw.exe "%1" %*
Christian Heimesd8654cf2007-12-02 15:22:16 +0000226
227
228Additional modules
229==================
230
231Even though Python aims to be portable among all platforms, there are features
232that are unique to Windows. A couple of modules, both in the standard library
233and external, and snippets exist to use these features.
234
235The Windows-specific standard modules are documented in
236:ref:`mswin-specific-services`.
237
238
239PyWin32
240-------
241
242The `PyWin32 <http://python.net/crew/mhammond/win32/>`_ module by Mark Hammond
243is a collection of modules for advanced Windows-specific support. This includes
Georg Brandl2ee470f2008-07-16 12:55:28 +0000244utilities for:
Christian Heimesd8654cf2007-12-02 15:22:16 +0000245
246* `Component Object Model <http://www.microsoft.com/com/>`_ (COM)
247* Win32 API calls
248* Registry
249* Event log
Georg Brandl495f7b52009-10-27 15:28:25 +0000250* `Microsoft Foundation Classes <http://msdn.microsoft.com/en-us/library/fe1cf721%28VS.80%29.aspx>`_ (MFC)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000251 user interfaces
252
253`PythonWin <http://web.archive.org/web/20060524042422/
254http://www.python.org/windows/pythonwin/>`_ is a sample MFC application
255shipped with PyWin32. It is an embeddable IDE with a built-in debugger.
256
257.. seealso::
258
259 `Win32 How Do I...? <http://timgolden.me.uk/python/win32_how_do_i.html>`_
260 by Tim Golden
261
262 `Python and COM <http://www.boddie.org.uk/python/COM.html>`_
263 by David and Paul Boddie
264
265
266Py2exe
267------
268
269`Py2exe <http://www.py2exe.org/>`_ is a :mod:`distutils` extension (see
270:ref:`extending-distutils`) which wraps Python scripts into executable Windows
271programs (:file:`{*}.exe` files). When you have done this, you can distribute
272your application without requiring your users to install Python.
273
274
275WConio
276------
277
278Since Python's advanced terminal handling layer, :mod:`curses`, is restricted to
279Unix-like systems, there is a library exclusive to Windows as well: Windows
280Console I/O for Python.
281
282`WConio <http://newcenturycomputers.net/projects/wconio.html>`_ is a wrapper for
283Turbo-C's :file:`CONIO.H`, used to create text user interfaces.
284
285
286
287Compiling Python on Windows
288===========================
289
290If you want to compile CPython yourself, first thing you should do is get the
291`source <http://python.org/download/source/>`_. You can download either the
292latest release's source or just grab a fresh `checkout
Éric Araujo8ed41a82011-02-26 14:57:23 +0000293<http://docs.python.org/devguide/setup#checking-out-the-code>`_.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000294
295For Microsoft Visual C++, which is the compiler with which official Python
296releases are built, the source tree contains solutions/project files. View the
297:file:`readme.txt` in their respective directories:
298
299+--------------------+--------------+-----------------------+
300| Directory | MSVC version | Visual Studio version |
301+====================+==============+=======================+
Christian Heimes2c181612007-12-17 20:04:13 +0000302| :file:`PC/VC6/` | 6.0 | 97 |
Christian Heimesd8654cf2007-12-02 15:22:16 +0000303+--------------------+--------------+-----------------------+
Benjamin Peterson9bc93512008-09-22 22:10:59 +0000304| :file:`PC/VS7.1/` | 7.1 | 2003 |
Christian Heimesd8654cf2007-12-02 15:22:16 +0000305+--------------------+--------------+-----------------------+
Benjamin Peterson9bc93512008-09-22 22:10:59 +0000306| :file:`PC/VS8.0/` | 8.0 | 2005 |
Christian Heimesd8654cf2007-12-02 15:22:16 +0000307+--------------------+--------------+-----------------------+
Benjamin Peterson9bc93512008-09-22 22:10:59 +0000308| :file:`PCbuild/` | 9.0 | 2008 |
Christian Heimesd8654cf2007-12-02 15:22:16 +0000309+--------------------+--------------+-----------------------+
310
311Note that not all of these build directories are fully supported. Read the
312release notes to see which compiler version the official releases for your
313version are built with.
314
315Check :file:`PC/readme.txt` for general information on the build process.
316
317
318For extension modules, consult :ref:`building-on-windows`.
319
320.. seealso::
321
322 `Python + Windows + distutils + SWIG + gcc MinGW <http://sebsauvage.net/python/mingw.html>`_
323 or "Creating Python extensions in C/C++ with SWIG and compiling them with
324 MinGW gcc under Windows" or "Installing Python extension with distutils
325 and without Microsoft Visual C++" by Sébastien Sauvage, 2003
326
Georg Brandl495f7b52009-10-27 15:28:25 +0000327 `MingW -- Python extensions <http://oldwiki.mingw.org/index.php/Python%20extensions>`_
Christian Heimesd8654cf2007-12-02 15:22:16 +0000328 by Trent Apted et al, 2007
329
330
331Other resources
332===============
333
334.. seealso::
335
336 `Python Programming On Win32 <http://www.oreilly.com/catalog/pythonwin32/>`_
337 "Help for Windows Programmers"
338 by Mark Hammond and Andy Robinson, O'Reilly Media, 2000,
339 ISBN 1-56592-621-8
340
341 `A Python for Windows Tutorial <http://www.imladris.com/Scripts/PythonForWindows.html>`_
342 by Amanda Birmingham, 2004
343