Rendez votre package exécutable avec __main__.py 5
mardi 13 janvier 2015 à 07:47Tout le monde connait le fichier __init__.py, mais __main__.py
est moins connu.
Il permet de lancer du code si on tente d’exécuter un package (c’est à dire un dossier qui contient un fichier __init__.py
):
$ tree monpackage/ monpackakge/ ├── __init__.py └── __main__.py 0 directories, 2 files $ cat monpackage/__main__.py print('Hello :)') $ python monpackage/ # ceci est un dossier Hello :) |
Le __main__.py
est aussi exécuté quand on fait python -m monpackage
.
Notez que son exécution suppose l’import préalable du package, et que donc __init__.py
sera toujours exécuté avant __main__.py
. En revanche, faire juste import monpackage
ne déclenche pas l’exécution de __main__.py
.
Si vous zippez votre package et appelez la commande python
, c’est aussi ce fichier qui sera exécuté. Pratique donc, pour faire un exécutable portable à peu de frais, tout en gardant la lib importable.