Ich konnte keine Antwort finden, nachdem ich alles Folgende gelesen hatte:
runpy
Standardmodul -m
des Python-Interpreters Begründung:
Wenn ein Testskript, das relative Importe verwendet, ohne die Option -m
ausgeführt wird, könnte ich eine Warnmeldung ausgeben, anstatt den Benutzer mit der Standard-Traceback zu verlassen, die zu ValueError: Attempted relative import in non-package
exception führt. Ohne dies zu wissen, kann ich diese Ausnahme erfassen und nur vorschlagen Mangel an -m
-Option könnte der Grund für einen Fehler sein.
Haftungsausschluss: Dies ist nur eine Beobachtung, ich habe es nicht in den Dokumenten gesehen, daher ist es wahrscheinlich implementierungsabhängig und möglicherweise nicht konsistent über verschiedene Python-Versionen.
Ich habe festgestellt, dass beim Aufrufen eines Skripts mit der Option -m
eine Variable namens __loader__
zum Namespace hinzugefügt wird. Sie können also oben im Skript prüfen, ob diese Variable vorhanden ist:
Für zusätzliche Sicherheit könnten Sie überprüfen, ob __loader__
eine Instanz von pkgutil.ImpLoader
ist:
Tags und Links python command-line