Quel est le but de l'-m interrupteur?
Pourriez-vous m'expliquer quelle est la différence entre un appel
python -m mymod1 mymod2.py args
et
python mymod1.py mymod2.py args
Il semble que dans les deux cas mymod1.py
est appelé et sys.argv
est
['mymod1.py', 'mymod2.py', 'args']
Alors, quelle est la -m
commutateur pour?
- S'il vous plaît corrigez-moi si je me trompe, mais
-m
semble chercher pourmymod1
par défaut dans le chemin de la bibliothèque. Exemple:python -m SimpleHTTPServer
œuvres, alors quepython SimpleHTTPServer
échoue aveccan't open file 'SimpleHTTPServer': [Errno 2] No such file or directory
. - J'ai en fait trouvé la réponse ici plus clair: stackoverflow.com/questions/46319694/...
Vous devez vous connecter pour publier un commentaire.
La première ligne de la
Rationale
section de PEP 338 dit:De sorte que vous pouvez spécifier n'importe quel module en Python chemin de recherche de cette façon, non seulement les fichiers dans le répertoire courant. Vous avez raison que
python mymod1.py mymod2.py args
a exactement le même effet. La première ligne de laScope of this proposal
article stipule:Avec
-m
plus est possible, comme de travailler avec des modules qui font partie d'un package, etc. Qu'est ce que le reste de la PEP est d'environ 338. Lire pour plus d'info.-m
estpython -m SimpleHTTPServer
. Très pratique quand j'ai besoin de partager certains fichiers sans l'aide d'un lecteur flash usb.python -m http.server
et c'est toujours génial!python -m package.subpackage.module
et de la résolution des machines seront utilisées, vous n'avez pas de point exactement.py
fichier. 2) Il est possible de faire par rapport des importations à partir du module est exécuté, sans aucune solution de contournement, en raison de son package sera chargé le long du chemin. 3) Absolue des importations sera basé sur le répertoire courant, et non pas le répertoire où le.py
fichier (''
est à la tête desys.path
, plutôt que de/path/to/my
, si le script est à/path/to/my/script.py
).Une chose que je pense que la peine de mentionner, lors de l'exécution
python interprète sera à la recherche pour un
__main__.py
fichier dans le chemin d'accès au package à exécuter. C'est l'équivalent de:Il va exécuter le contenu après:
si le fichier n'existe pas, ce package ne peut pas être exécuté directement.