Quel est le rôle du commutateur -m ?
Introduction
Le -m L'option étend les capacités de Python, permettant une polyvalence dans l'exécution et le développement de modules. Il remplit trois rôles principaux :
1. Exécution du module par nom du module
python -m
2. Résolution améliorée du chemin du module
Lors de l'utilisation de -m, le répertoire de travail actuel est ajouté à sys.path. Cela permet d'importer des modules depuis le répertoire actuel, permettant l'exécution de packages locaux sans avoir besoin d'installation.
3. Prise en charge des importations relatives et absolues
-m gère les importations absolues et relatives lors de l'exécution de modules. Cela permet aux développeurs d'utiliser les importations de la même manière, qu'un module soit exécuté à partir de la ligne de commande ou via une instruction d'importation.
Développement historique
Initialement, - m ne prend en charge que les noms de modules de niveau supérieur. Avec PEP 338, il a été étendu pour inclure les sous-modules et l'initialisation du package parent. Enfin, PEP 366 a introduit la prise en charge des importations relatives explicites.
Cas d'utilisation
-m excelle dans deux scénarios :
Limitations
-m a une limitation importante : il ne peut exécuter que Python modules de code (*.py). Les modules de code compilés C ne s'exécuteront pas correctement en utilisant -m.
Comparaisons avec d'autres méthodes d'exécution de modules
Méthode d'exécution | Modification de sys.path |
|
package Paramètre | initÉvaluation | mainÉvaluation | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Aucun changement | Nom de module absolu | Package parent | Oui (packages uniquement) | Non (forfaits uniquement) | |||||||||||||||||||||||||
Ligne de commande avec nom de fichier | Répertoire final du nom de fichier | '__main__' | Aucun | Non (tous les modules) | Oui (modules du package) | ||||||||||||||||||||||||
Ligne de commande avec nom de module (-m) | Actuel répertoire'__main__' | Package parent | Oui (packages uniquement) | Oui (modules du package) | tr>
Conclusion
Le commutateur -m offre aux développeurs un outil polyvalent pour l'exécution et le développement de modules. Il offre une flexibilité dans la recherche de modules, prend en charge la résolution de chemin dynamique et facilite l'exécution transparente de code Python complexe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!