blob: 7961a60c0aa50800a83d646effe47f04ac32bf76 [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 Brandl628e6f92009-10-27 20:24:45 +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
72 suite for building extensible python applications
73
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
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000159.. `` this fixes syntax highlighting errors in some editors due to the \\ hackery
Christian Heimesd8654cf2007-12-02 15:22:16 +0000160
161You can add folders to your search path to make Python's import mechanism search
162in these directories as well. Use :envvar:`PYTHONPATH`, as described in
163:ref:`using-on-envvars`, to modify :data:`sys.path`. On Windows, paths are
164separated by semicolons, though, to distinguish them from drive identifiers
165(:file:`C:\\` etc.).
166
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000167.. ``
Christian Heimesd8654cf2007-12-02 15:22:16 +0000168
169Modifying the module search path can also be done through the Windows registry:
170Edit
171:file:`HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\{version}\\PythonPath\\`,
172as described above for the environment variable :envvar:`%PYTHONPATH%`. A
173convenient registry editor is :program:`regedit` (start it by typing "regedit"
174into :menuselection:`Start --> Run`).
175
176
177Executing scripts
178-----------------
179
180Python scripts (files with the extension ``.py``) will be executed by
181:program:`python.exe` by default. This executable opens a terminal, which stays
182open even if the program uses a GUI. If you do not want this to happen, use the
183extension ``.pyw`` which will cause the script to be executed by
184:program:`pythonw.exe` by default (both executables are located in the top-level
185of your Python installation directory). This suppresses the terminal window on
186startup.
187
188You can also make all ``.py`` scripts execute with :program:`pythonw.exe`,
Georg Brandl2ee470f2008-07-16 12:55:28 +0000189setting this through the usual facilities, for example (might require
Christian Heimes2380ac72008-01-09 00:17:24 +0000190administrative rights):
Christian Heimesd8654cf2007-12-02 15:22:16 +0000191
Christian Heimes2380ac72008-01-09 00:17:24 +0000192#. Launch a command prompt.
193#. Associate the correct file group with ``.py`` scripts::
Georg Brandl48310cd2009-01-03 21:18:54 +0000194
Christian Heimes2380ac72008-01-09 00:17:24 +0000195 assoc .py=Python.File
Christian Heimesd8654cf2007-12-02 15:22:16 +0000196
Christian Heimes2380ac72008-01-09 00:17:24 +0000197#. Redirect all Python files to the new executable::
Georg Brandl48310cd2009-01-03 21:18:54 +0000198
Christian Heimes2380ac72008-01-09 00:17:24 +0000199 ftype Python.File=C:\Path\to\pythonw.exe "%1" %*
Christian Heimesd8654cf2007-12-02 15:22:16 +0000200
201
202Additional modules
203==================
204
205Even though Python aims to be portable among all platforms, there are features
206that are unique to Windows. A couple of modules, both in the standard library
207and external, and snippets exist to use these features.
208
209The Windows-specific standard modules are documented in
210:ref:`mswin-specific-services`.
211
212
213PyWin32
214-------
215
216The `PyWin32 <http://python.net/crew/mhammond/win32/>`_ module by Mark Hammond
217is a collection of modules for advanced Windows-specific support. This includes
Georg Brandl2ee470f2008-07-16 12:55:28 +0000218utilities for:
Christian Heimesd8654cf2007-12-02 15:22:16 +0000219
220* `Component Object Model <http://www.microsoft.com/com/>`_ (COM)
221* Win32 API calls
222* Registry
223* Event log
Georg Brandl628e6f92009-10-27 20:24:45 +0000224* `Microsoft Foundation Classes <http://msdn.microsoft.com/en-us/library/fe1cf721%28VS.80%29.aspx>`_ (MFC)
Christian Heimesd8654cf2007-12-02 15:22:16 +0000225 user interfaces
226
227`PythonWin <http://web.archive.org/web/20060524042422/
228http://www.python.org/windows/pythonwin/>`_ is a sample MFC application
229shipped with PyWin32. It is an embeddable IDE with a built-in debugger.
230
231.. seealso::
232
233 `Win32 How Do I...? <http://timgolden.me.uk/python/win32_how_do_i.html>`_
234 by Tim Golden
235
236 `Python and COM <http://www.boddie.org.uk/python/COM.html>`_
237 by David and Paul Boddie
238
239
240Py2exe
241------
242
243`Py2exe <http://www.py2exe.org/>`_ is a :mod:`distutils` extension (see
244:ref:`extending-distutils`) which wraps Python scripts into executable Windows
245programs (:file:`{*}.exe` files). When you have done this, you can distribute
246your application without requiring your users to install Python.
247
248
249WConio
250------
251
252Since Python's advanced terminal handling layer, :mod:`curses`, is restricted to
253Unix-like systems, there is a library exclusive to Windows as well: Windows
254Console I/O for Python.
255
256`WConio <http://newcenturycomputers.net/projects/wconio.html>`_ is a wrapper for
257Turbo-C's :file:`CONIO.H`, used to create text user interfaces.
258
259
260
261Compiling Python on Windows
262===========================
263
264If you want to compile CPython yourself, first thing you should do is get the
265`source <http://python.org/download/source/>`_. You can download either the
266latest release's source or just grab a fresh `checkout
Christian Heimes8b0facf2007-12-04 19:30:01 +0000267<http://www.python.org/dev/faq/#how-do-i-get-a-checkout-of-the-repository-read-only-and-read-write>`_.
Christian Heimesd8654cf2007-12-02 15:22:16 +0000268
269For Microsoft Visual C++, which is the compiler with which official Python
270releases are built, the source tree contains solutions/project files. View the
271:file:`readme.txt` in their respective directories:
272
273+--------------------+--------------+-----------------------+
274| Directory | MSVC version | Visual Studio version |
275+====================+==============+=======================+
Christian Heimes2c181612007-12-17 20:04:13 +0000276| :file:`PC/VC6/` | 6.0 | 97 |
Christian Heimesd8654cf2007-12-02 15:22:16 +0000277+--------------------+--------------+-----------------------+
Benjamin Peterson9bc93512008-09-22 22:10:59 +0000278| :file:`PC/VS7.1/` | 7.1 | 2003 |
Christian Heimesd8654cf2007-12-02 15:22:16 +0000279+--------------------+--------------+-----------------------+
Benjamin Peterson9bc93512008-09-22 22:10:59 +0000280| :file:`PC/VS8.0/` | 8.0 | 2005 |
Christian Heimesd8654cf2007-12-02 15:22:16 +0000281+--------------------+--------------+-----------------------+
Benjamin Peterson9bc93512008-09-22 22:10:59 +0000282| :file:`PCbuild/` | 9.0 | 2008 |
Christian Heimesd8654cf2007-12-02 15:22:16 +0000283+--------------------+--------------+-----------------------+
284
285Note that not all of these build directories are fully supported. Read the
286release notes to see which compiler version the official releases for your
287version are built with.
288
289Check :file:`PC/readme.txt` for general information on the build process.
290
291
292For extension modules, consult :ref:`building-on-windows`.
293
294.. seealso::
295
296 `Python + Windows + distutils + SWIG + gcc MinGW <http://sebsauvage.net/python/mingw.html>`_
297 or "Creating Python extensions in C/C++ with SWIG and compiling them with
298 MinGW gcc under Windows" or "Installing Python extension with distutils
299 and without Microsoft Visual C++" by Sébastien Sauvage, 2003
300
Georg Brandl628e6f92009-10-27 20:24:45 +0000301 `MingW -- Python extensions <http://oldwiki.mingw.org/index.php/Python%20extensions>`_
Christian Heimesd8654cf2007-12-02 15:22:16 +0000302 by Trent Apted et al, 2007
303
304
305Other resources
306===============
307
308.. seealso::
309
310 `Python Programming On Win32 <http://www.oreilly.com/catalog/pythonwin32/>`_
311 "Help for Windows Programmers"
312 by Mark Hammond and Andy Robinson, O'Reilly Media, 2000,
313 ISBN 1-56592-621-8
314
315 `A Python for Windows Tutorial <http://www.imladris.com/Scripts/PythonForWindows.html>`_
316 by Amanda Birmingham, 2004
317