The Python 2.5 "-m" command-line option allowed execution of a package directly, by invoking the __init__.py module. Python 2.6 no longer allows this. This is a quite unfortunate regression, and I would urge the decision to hobble it to be reconsidered.
Now, if someone was to provide a 2.7 rfe with associated patch that implements this feature properly, and includes an explanation for why it doesn't subtly break imports the way 2.5 does, that would be a completely different story. But it isn't as simple as just getting rid of the explicit check that prevents packages from being executed.
I'm afraid it's all a bit opaque to an outsider like me. I've no idea what subtle breakage the feature was causing. I just saw it working quite nicely for me in 2.5 :)
If I recall correctly (it's been a while), the breakages were tied in with relative imports - probably something like explicit relative imports not working at all, and implicit relative imports appearing to work, but resulting in incorrect module names and sys.modules entries (similar to running a file from inside a package directly). Doing "python -m package.__init__" instead of "python -m package" is actually better behaved (although still a little odd - the __init__ module code gets run once on the actual package import, and then again as __main__).
History
Date
User
Action
Args
2022-04-11 14:56:36
admin
set
github: 47691
2008-07-26 07:10:37
ncoghlan
set
messages: +
2008-07-26 06:48:32
richard
set
messages: +
2008-07-26 06:40:09
ncoghlan
set
messages: +
2008-07-25 12:33:07
benjamin.peterson
set
status: open -> closednosy: + benjamin.petersonresolution: duplicatemessages: +