In Python 3 konnte ich das -m-Flag in der Befehlszeile verwenden, um ein beliebiges Verzeichnis als Python-Paket auszuführen oder um Python-Module in diesen Verzeichnissen mit relativen Importen auszuführen. Allerdings scheint dies nicht der Fall in Python zu sein 2.Wie unterscheidet sich die Markierung -m zwischen Python 2 und 3?
Lassen Sie uns sagen, dass ich die folgende Dateistruktur haben:
C:\mflag
└───pack
hey.py
Und dass der Inhalt von hey.py sind:
from __future__ import print_function
print("Hello!")
Warum ist das Verhalten dieser beiden Befehle unterschiedlich?
C:\mflag>python -m pack.hey
Hello!
C:\mflag>python2 -m pack.hey
C:\Python27\python2.exe: No module named pack
Suspect es ist wahrscheinlich etwas mit [Namensraum-Pakete] zu tun (https://www.python.org/dev/peps/pep-0420/) –
Ich glaube, Sie sollten eine 'Pack \ __ init__ .py' um es zu einem offiziellen Paket zu machen. Python 3 könnte etwas flexibler sein. – ShadowRanger