2016-11-15 Mettre à jour un module sous Windows

Comme il n’existe pas de compilateur par défaut sous Windows, l’installation ou la mise à jour des modules requiert de passer toujours par les mêmes étapes. Si la distribution Anaconda est installée et que le module est maintenu, il faut toujours exécuter :

conda install <module>

Et :

conda update <module>

Si le module n’est pas maintenu ou que la distribution Anaconda n’est pas utilisé, il existe trois cas possibles.

  1. Le module est écrit en Python pur (exemple : seaborn).

  2. Le module contient du C++ et est compilé par le site Unofficial Windows Binaries for Python Extension Packages (exemple : numpy).

  3. Le module contient du C++ et n’est pas compilé par le site Unofficial Windows Binaries for Python Extension Packages : (exemple : xgboost).

Le cas 1 est simple si le module dépend de modules tous écrits en Python (voir plus bas). Il suffit d’exécuter :

pip install <module>

Ou :

pip install <module> --upgrade

Si on souhaite installer ou mettre à jour le module sans les dépendances, il faut ajouter l’option --no-deps. Cette option est indispensable lorsqu’on met à jour un module qui prend une dépendance sur un autre module qui contient du C++ comme seaborn. La mise à jour de ce module entraîne la mise à jour de numpy qui échoue car elle requiert un compilateur C++ et Intel® Math Kernel Library.

NumPy, a fundamental package needed for scientific computing with Python. Numpy+MKL is linked to the Intel® Math Kernel Library and includes required DLLs in the numpy.core directory.

Le cas 2 est simple aussi dans la mesure où il suffit de télécharger le fichier .whl depuis le site Unofficial Windows Binaries for Python Extension Packages. Une fois ce fichier téléchargé, il suffit d’exécuter :

pip install <fichier>

La mise à jour se fait de la même façon :

pip install <fichier>

Le cas 3 est plus complexe. Il requiert que le module soit compilé. Pypi propose parfois une version compilée comme pour scipy mais il faut vérifier qu’il existe une version pour la distribution de Python installée. Il existe deux sous-cas.

Cas 3.1 : le site du module explique comment compiler le module sous Windows. C’est le cas de xgboost. Lire Build xgboost on Windows.

Cas 3.2 : le module peut être compilé avec les instructions standard. Exemple : Build param on Windows.

Que fait le module pymyinstall ?

Le module pymyinstall peut installer ou mettre à jour une liste de modules utilisée pour mes enseignements. C’est un mélange de module Python (cas 1), de module C++ accessibles depuis le site Unofficial Windows Binaries for Python Extension Packages ou non (cas 3). Dans ce dernier cas, le module va chercher la dernière version compilé sur le site www.xavierdupre.fr. Pour s’en servir :

pymy_install <module>

Ou pour mettre à jour :

pymy_update <module>

Les instructions pour compiler certains modules compliqués sont décrites sur ce blog.