~dkuhlman/python-training-materials/Materials

« back to all changes in this revision

Viewing changes to python-2.7.11-docs-html/_sources/using/windows.txt

  • Committer: Dave Kuhlman
  • Date: 2017-04-15 16:24:56 UTC
  • Revision ID: dkuhlman@davekuhlman.org-20170415162456-iav9vozzg4iwqwv3
Updated docs

Show diffs side-by-side

added added

removed removed

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