Home | History | Annotate | Download | only in using
      1 .. highlightlang:: none
      2 
      3 .. _using-on-windows:
      4 
      5 *************************
      6  Using Python on Windows
      7 *************************
      8 
      9 .. sectionauthor:: Robert Lehmann <lehmannro (a] 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 <https://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://dooling.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://python.swaroopch.com/installation.html#installation-on-windows>`_
     56       in "Installing Python"
     57       in "`A Byte of Python <http://python.swaroopch.com/>`_"
     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 <https://www.activestate.com/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    https://support.microsoft.com/kb/100843
    127       Environment variables in Windows NT
    128 
    129    https://support.microsoft.com/kb/310519
    130       How To Manage Environment Variables in Windows XP
    131 
    132    https://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 <https://pypi.python.org/pypi/pywin32>`_ 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 <https://www.microsoft.com/com/>`_ (COM)
    250 * Win32 API calls
    251 * Registry
    252 * Event log
    253 * `Microsoft Foundation Classes <https://msdn.microsoft.com/en-us/library/fe1cf721%28VS.80%29.aspx>`_ (MFC)
    254   user interfaces
    255 
    256 `PythonWin <https://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/downloads/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 Sbastien 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 
    347