Cython : “unable to find vcvarsall.bat”

Vous avez prévu d’optimiser un peu votre code python en le compilant à l’aide de Cython ?

Le tutoriel est assez simple, on prépare un petit “helloWorld.pyx” et un fichier “setup.py”, on ouvre une fenêtre de commande et là c’est le drame :

Qu’est ce que ce fichier ? Comment résoudre le problème ?

Tout d’abord je suggère la lecture de ce post qui explique ce qu’est ce fichier et pourquoi il est nécessaire. Pour faire simple, c’est un composant du compilateur de Visual Studio, nécessaire à la bonne compilation de notre fichier.

On trouve plusieurs solutions à ce problème, voici celle que j’ai utilisé qui me semble être la plus simple.

Attention : cette solution fonctionne pour python 3.5+, sur windows 7/8/10 (apparemment sous linux on n’a pas ce genre de soucis).

  1. Télécharger et installer Visual Studio, la version community est gratuite et convient amplement.
  2. Lors de l’installation, ne pas oublier d’installer les packages C++ pour les projets windows desktop.

Désormais, ce maudit fichier est installé mais si vous essayez de compiler, vous risquez d’avoir toujours la même erreur.

Ne vous en faites pas, la solution est toute simple: pour lancer la compilation, il ne faut pas ouvrir une ligne de commande standard, mais à partir de Visual Studio. Allez dans le menu démarrer, et sélectionnez l’option correspondant à votre système (x86 / x64), cette fois l’environnement sera correctement paramétré et vous pourrez continuer :

A peine l’invite de commande démarrée, nous sommes rassurés. Vérifiez que la fenêtre porte le bon nom (ici x64 Native Tools Command Prompt for VS 2017), et notez la présence de la ligne suivante : [[vcvarsall.bat] Environment initialized for: ‘x64’]

Ouf ! Nous y sommes presques.

Maintenant, suivez les étapes suivantes :

  1. Rendez-vous dans le dossier contenant votre fichier .pyx et setup.py, et entrez la commande suivante : set DISTUTILS_USE_SDK=1
  2. Puis vous pouvez compiler en entrant : python setup.py build_ext –inplace
  3. Retournez dans votre console Python et tapez : import nomFichier

Et voilà, votre fichier est importé et donc exécuté.

J’espère que ça vous évitera une prise de tête inutile et surtout n’hésitez pas à commenter.

Leave a Reply

Your email address will not be published. Required fields are marked *