Les modules Python sont juste des fichiers de script sont situés dans un endroit où Python peut les trouver. Comme avec tous les scripts, vous pouvez simplement exécuter directement si vous savez où ils sont, par exemple, python /path/to/module.py
.
Correctement conçu des modules généralement rien de moins que de définir les trucs (par exemple, les fonctions et les types que vous pouvez importer), mais, généralement, ils n'auront pas visible sur le côté effet. C'est pourquoi vous pouvez faire import sys
et rien ne se passe.
Cependant, certains modules peuvent offrir des trucs utiles quand ils sont exécutés à partir de la ligne de commande. Exemples pour qui incluent venv
mais aussi http.server
ou idlelib
: Tous ceux qui sont réguliers, des modules qui peuvent être importés à partir d'autres modules sans effets secondaires.
Mais lorsqu'il est exécuté directement, ils font tous des choses (par exemple, venv
met en place un environnement virtuel, http.server
exécute un simple serveur HTTP, et idlelib
s'exécute en veille). Ceci est habituellement fait avec le cocher suivantes:
if __name__ == '__main__':
print('Module is being executed directly, so do stuff here')
C'est une façon spéciale de la reconnaissance d'un script/module est exécuté directement, ou si c'est juste être importés à partir d'un autre module. Vous pouvez en apprendre plus sur la question "Qu'est - if __name__ == '__main__':
faire?".
Ainsi, vous pouvez exécuter un module directement à l'aide d' python /path/to/module.py
comme nous l'avons établi avant de. Mais cela nécessite de connaître le chemin d'accès complet pour le module. C'est là que l' -m
option entre en jeu: Pour les modules qui peuvent généralement être importés en utilisant simplement import modulename
, vous pouvez utiliser python -m modulename
pour exécuter ce module directement. Tout comme si vous avez tapé le chemin d'accès complet.
Ainsi, pour notre exemple ci-dessus, nous pouvons utiliser un python -m venv
, python -m http.server
. ou python -m idlelib
.