Es wird häufig beobachtet, dass python -m mymod1 mymod2.py args und python mymod1. py mymod2.py args-Befehle führen beide zur Ausführung von mymod1.py mit einer passenden sys.argv. Der Schalter -m bietet jedoch eine Reihe zusätzlicher Funktionen, die über die Konvertierung von Dateinamen in Modulnamen hinausgehen.
Das Flag -m dient als alternative Möglichkeit, Python-Module direkt über die Befehlszeile unter Verwendung ihres Modulnamens anstelle des Dateinamens aufzurufen. Dies ist besonders nützlich für die Ausführung von Standardbibliotheksmodulen oder Paketen von Drittanbietern, deren Dateinamen möglicherweise unbekannt sind. Um beispielsweise das http.server-Modul auszuführen, kann man einfach python -m http.server.
Die Verwendung des Schalters -m ruft nicht nur das Modul auf, sondern ändert auch sys.path, um das aktuelle Verzeichnis einzuschließen, eine Funktion, die bei Verwendung von Python mymod1.py fehlt. Dies ermöglicht die Ausführung lokaler Pakete, die relative Importe enthalten, ohne dass eine Installation erforderlich ist.
Zusätzlich zum Hinzufügen des aktuellen Verzeichnisses zu sys.path ermöglicht -m die Ausführung von Modulen mit relativen Importen. Dies wird erreicht, indem die Variable __package__ auf das übergeordnete Modul des angegebenen Modulnamens gesetzt wird, wodurch relative Importe wie vorgesehen funktionieren.
Zur Veranschaulichung der Unterschiede zwischen den 三种n Die wichtigsten Möglichkeiten zum Aufrufen von Python-Modulen finden Sie in der folgenden Tabelle Attribute:
Invocation Method | sys.path Modification | name | package |
---|---|---|---|
import |
None | Absolute form of |
Immediate parent package |
python |
Includes final directory in |
'__main__' | None |
python -m |
Includes current directory | '__main__' | Immediate parent package |
Der Schalter -m in Python ist ein vielseitiges Tool, das eine breite Palette von Funktionen bietet, die über die einfache Konvertierung von Dateinamen in Modulnamen hinausgehen. Es bietet eine nahtlose Möglichkeit, Module über die Befehlszeile auszuführen, relative Importe abzuwickeln und lokale Pakete in sys.path zu integrieren. Dies macht es zu einem wertvollen Werkzeug für Entwickler, die sowohl lokal als auch extern mit Python-Modulen arbeiten.
Das obige ist der detaillierte Inhalt vonWas sind die Hauptunterschiede zwischen „python -m' und „python' für die Ausführung von Python-Modulen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!