# 3. Utiliser Python sur Windows

Ce document a pour but de donner une vue d’ensemble des comportements spécifiques à Windows dont vous devriez être au courant si vous utilisez Python sur Microsoft Windows.

## 3.1. Installer Python

Unlike most Unix systems and services, Windows does not require Python natively and thus does not pre-install a version of Python. However, the CPython team has compiled Windows installers (MSI packages) with every release for many years.

Avec le développement continu de Python, certaines plateformes qui étaient auparavant prises en charge ne sont plus prises en charge (en raison du manque d’utilisateurs ou de développeurs). Voir PEP 11 pour plus de détails sur toutes les plateformes non prises en charge.

- DOS and Windows 3.x are deprecated since Python 2.0 and code specific to these systems was removed in Python 2.1.

- Up to 2.5, Python was still compatible with Windows 95, 98 and ME (but already raised a deprecation warning on installation). For Python 2.6 (and all following releases), this support was dropped and new releases are just expected to work on the Windows NT family.

- Windows CE est toujours pris en charge.

- L’installateur Cygwin offre d’installer l’interpréteur Python (cf. Cygwin package source, Maintainer releases)

See Python for Windows (and DOS) for detailed information about platforms with precompiled installers.

Voir aussi

Python on XP

  « 7 Minutes to « Hello World! » » by Richard Dooling, 2006

Installing on Windows

  in « Dive into Python: Python from novice to pro » by Mark Pilgrim, 2004, ISBN 1-59059-356-1

For Windows users

  in « Installing Python » in « A Byte of Python » by Swaroop C H, 2003

## 3.2. Paquets alternatifs

À part la distribution standard CPython, il y a des paquets modifiés incluant des fonctionnalités additionnelles. La liste qui suit est une liste de versions populaires et de leurs fonctionnalités principales :

ActivePython

  Installeur avec une compatibilité multi-plateforme, de la documentation, et PyWin32

Enthought Python Distribution

  Popular modules (such as PyWin32) with their respective documentation, tool suite for building extensible Python applications

Notice that these packages are likely to install older versions of Python.

## 3.3. Configurer Python

In order to run Python flawlessly, you might have to change certain environment settings in Windows.

### 3.3.1. Digression : Définition des variables d’environnement

Windows has a built-in dialog for changing environment variables (following guide applies to XP classical view): Right-click the icon for your machine (usually located on your Desktop and called « My Computer ») and choose Properties there. Then, open the Advanced tab and click the Environment Variables button.

In short, your path is:

> My Computer ‣ Properties ‣ Advanced ‣ Environment Variables

In this dialog, you can add or modify User and System variables. To change System variables, you need non-restricted access to your machine (i.e. Administrator rights).

Another way of adding variables to your environment is using the set command:

    set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

To make this setting permanent, you could add the corresponding command line to your `autoexec.bat`. msconfig is a graphical interface to this file.

Viewing environment variables can also be done more straight-forward: The command prompt will expand strings wrapped into percent signs automatically:

    echo %PATH%

Consult set /? for details on this behaviour.

Voir aussi

https://support.microsoft.com/kb/100843

  Variables d’environnement dans Windows NT

https://support.microsoft.com/kb/310519

  Comment gérer les variables d’environnement sous Windows XP

https://www.chem.gla.ac.uk/~louis/software/faq/q1.html

  Définir les variables d’environnement, Louis J. Farrugia

### 3.3.2. Trouver l’exécutable Python

Besides using the automatically created start menu entry for the Python interpreter, you might want to start Python in the DOS prompt. To make this work, you need to set your `%PATH%` environment variable to include the directory of your Python distribution, delimited by a semicolon from other entries. An example variable could look like this (assuming the first two entries are Windows” default):

    C:\WINDOWS\system32;C:\WINDOWS;C:\Python25

Typing python on your command prompt will now fire up the Python interpreter. Thus, you can also execute your scripts with command line options, see Ligne de commande documentation.

### 3.3.3. Recherche de modules

Python stocke généralement sa bibliothèque (et donc votre dossier `site-packages`) dans le répertoire d’installation. Donc, si vous aviez installé Python dans `C:\Python\`, la bibliothèque par défaut résiderait dans `C:\Python\Lib\` et les modules tiers devraient être stockés dans `C:\Python\Lib\site-packages\`.

This is how `sys.path` is populated on Windows:

- Une entrée vide est ajoutée au début, qui correspond au répertoire courant.

- Si la variable d’environnement `PYTHONPATH` existe, comme décrit dans Variables d’environnement, ses entrées sont ajoutées ensuite. Notez que sur Windows, les chemins d’accès de cette variable doivent être séparés par des points-virgules, pour les distinguer des deux points utilisés dans les identificateurs de lecteur (`C:\` etc.).

- Des « chemins d’accès d’application » supplémentaires peuvent être ajoutés dans le registre en tant que sous-clés de `\SOFTWARE\Python\PythonCore{version}\PythonPath` sous les ruches `HKEY_CURRENT_USER` et `HKEY_LOCAL_MACHINE`. Les sous-clés qui ont des chaînes de chemin délimitées par des points-virgules comme valeur par défaut entraînent l’ajout de chaque chemin d’accès à `sys.path`. (Notez que tous les installateurs connus utilisent seulement HKLM, donc HKCU est généralement vide.)

- If the environment variable `PYTHONHOME` is set, it is assumed as « Python Home ». Otherwise, the path of the main Python executable is used to locate a « landmark file » (`Lib\os.py`) to deduce the « Python Home ». If a Python home is found, the relevant sub-directories added to `sys.path` (`Lib`, `plat-win`, etc) are based on that folder. Otherwise, the core Python path is constructed from the PythonPath stored in the registry.

- Si le « Python Home » ne peut pas être trouvé, `PYTHONPATH` n’est pas spécifié dans l’environnement et aucune entrée de registre ne peut être trouvée, un chemin par défaut avec des entrées relatives est utilisé (par exemple `.\Lib` ; `.\plat-win`, etc.).

Le résultat final de tout ceci est :

- Lors de l’exécution de `python.exe`, ou tout autre `.exe` dans le répertoire principal de Python (soit une version installée, soit directement à partir du répertoire PCbuild), le chemin principal est déduit et les chemins d’accès principaux dans le Registre sont ignorés. D’autres « chemins d’application » dans le registre sont toujours lus.

- Lorsque Python est hébergé dans un autre fichier `.exe` (répertoire différent, intégré via COM, etc.), le « Python Home » ne sera pas déduit, de sorte que le chemin d’accès principal du registre est utilisé. D’autres « chemins d’application » dans le registre sont toujours lus.

- If Python can’t find its home and there is no registry (eg, frozen .exe, some very strange installation setup) you get a path with some default, but relative, paths.

### 3.3.4. Executing scripts

Python scripts (files with the extension `.py`) will be executed by python.exe by default. This executable opens a terminal, which stays open even if the program uses a GUI. If you do not want this to happen, use the extension `.pyw` which will cause the script to be executed by pythonw.exe by default (both executables are located in the top-level of your Python installation directory). This suppresses the terminal window on startup.

You can also make all `.py` scripts execute with pythonw.exe, setting this through the usual facilities, for example (might require administrative rights):

1. Launch a command prompt.

2. Associate the correct file group with `.py` scripts:

       assoc .py=Python.File

3. Redirect all Python files to the new executable:

       ftype Python.File=C:\Path\to\pythonw.exe "%1" %*

## 3.4. Modules supplémentaires

Même si Python a l’ambition d’être portable parmi toutes les plates-formes, il existe des fonctionnalités propres à Windows. Certains modules, à la fois dans la bibliothèque standard et externe, et des exemples existent pour utiliser ces fonctionnalités.

Les modules standard de Windows sont documentés dans Services spécifiques à MS Windows.

### 3.4.1. PyWin32

The PyWin32 module by Mark Hammond is a collection of modules for advanced Windows-specific support. This includes utilities for:

- Component Object Model (COM)

- Appels à l’API Win32

- Registre

- journal d’événement

- Microsoft Foundation Classes (MFC) interfaces utilisateur

PythonWin est une exemple d’application MFC livrée avec PyWin32. Il s’agit d’un IDE embarqué avec débogueur intégré.

Voir aussi

Win32 How Do I…?

  par Tim Golden

Python and COM

  par David et Paul Boddie

### 3.4.2. Py2exe

Py2exe is a `distutils` extension (see Extension de Distutils) which wraps Python scripts into executable Windows programs (`*.exe` files). When you have done this, you can distribute your application without requiring your users to install Python.

### 3.4.3. WConio

Depuis la couche avancée de gestion de terminal de Python, `curses`, est limité aux systèmes de type UNIX, il existe une bibliothèque exclusive à Windows : Windows Console I/O for Python.

WConio est un wrapper pour les fichiers Turbo-C `CONIO.H`, utilisé pour créer des interfaces texte utilisateur.

## 3.5. Compiler Python sous Windows

If you want to compile CPython yourself, first thing you should do is get the source. You can download either the latest release’s source or just grab a fresh checkout.

For Microsoft Visual C++, which is the compiler with which official Python releases are built, the source tree contains solutions/project files. View the `readme.txt` in their respective directories:

Répertoire | version de MSVC | Version de Visual Studio
--- | --- | ---
`PC/VC6/` | 6.0 | 97
`PC/VS7.1/` | 7.1 | 2003
`PC/VS8.0/` | 8.0 | 2005
`PCbuild/` | 9.0 | 2008

Note that not all of these build directories are fully supported. Read the release notes to see which compiler version the official releases for your version are built with.

Vérifiez `PC/readme.txt` pour des informations générales sur le processus de construction.

Pour les modules d’extension, consultez Construire des extensions C et C++ sur Windows.

Voir aussi

Python + Windows + distutils + SWIG + gcc MinGW

  ou « Creating Python extensions in C/C++ with SWIG and compiling them with MinGW gcc under Windows » ou « Installing Python extension with distutils and without Microsoft Visual C++ » par Sébastien Sauvage, 2003

MingW – Python extensions

  par Trent Apted et al, 2007

## 3.6. Autres ressources

Voir aussi

Python Programming On Win32

  « Help for Windows Programmers » de Mark Hammond et Andy Robinson, O’Reilly Media, 2000, ISBN 1-56592-621-8

A Python for Windows Tutorial

  par Amanda Birmingham, 2004