Appeler Python depuis Ant

Aujourd’hui, pour des raisons professionnelles, j’ai eu besoin d’appeler Python depuis Ant. Il était en effet bien plus facile d’effectuer le traitement souhaité en Python qu’en Ant. Cet article retrace les points principaux pour appeler un script Python depuis un script Ant.

Pour l’exemple, je crée dans Eclipse un projet de type général nommé PythonFromAnt qui contient le script Ant, ant.xml, et le script Python, script.py.

Le script Python est très simple, il affiche son nom et renvoie le code passé via la ligne de commande :

import sys
print("hello, this script is " + sys.argv[0])
ret = int(sys.argv[1])
print("exit code = {0}".format(ret))
sys.exit(int(sys.argv[1]))

Pour appeler Python depuis Ant, il suffit d’utiliser la tâche Ant exec :

<?xml version="1.0" encoding="UTF-8"?>
<project name="example" default="main">

  <target name="main">
    <!– La propriété ant.file.PROJECT_NAME (ici, PROJECT_NAME="example") est toujours fournie par Ant –>
    <dirname file="{ant.file.example}" property="current.folder"/>

    <!– Le script Python retournera 0, signifiant que tout s’est bien passé –>
    <exec executable="python" dir="${current.folder}">
      <arg line="script.py 0"/>
    </exec>

    <!– Le script Python retournera 1 mais l’exécution Ant continue. On voit le résultat en rouge dans la console –>
    <exec executable="python" dir="${current.folder}">
      <arg line="script.py 1"/>
    </exec>

    <!– Le script Python retournera 1 et cela activera le "failonerror" d’Ant –>
    <exec executable="python" dir="${current.folder}" failonerror="true">
      <arg line="script.py 1"/>
    </exec>

    <echo>Ce message ne sera pas affiché</echo>
  </target>

</project>

Pour faire simple, j’ai ajouté Python au path, pour ne pas avoir à donner le chemin complet à exec. En arguments, je donne le chemin vers mon script Python et les paramètres à fournir à ce script. L’attribut dir permet de s’assurer que Python est lancé dans le dossier où se trouve le script qu’il cherche. Mon exemple est très simple, on aurait sans doute pu faire sans, mais dans un environnement de build plus important, le script Ant peut-être exécuté depuis un autre dossier et Python renverra une erreur car il ne trouve pas script.py.

Exécutez le script en faisant un clic-droit Run as…Ant build pour avoir la sortie suivante dans la console d’Eclipse :

Python from Ant - Sortie console

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s