__main__ – Sam & Max http://sametmax.com Du code, du cul Wed, 23 Dec 2020 13:35:02 +0000 en-US hourly 1 https://wordpress.org/?v=4.9.7 32490438 Rendez votre package exécutable avec __main__.py http://sametmax.com/rendez-votre-module-executable-avec-__main__-py/ http://sametmax.com/rendez-votre-module-executable-avec-__main__-py/#comments Tue, 13 Jan 2015 06:47:42 +0000 http://sametmax.com/?p=15704 __init__.py, mais __main__.py est moins connu.]]> Tout 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.

]]>
http://sametmax.com/rendez-votre-module-executable-avec-__main__-py/feed/ 5 15704