classification
Title: Regression in "module as a script" command-line option
Type: behavior Stage:
Components: Versions: Python 2.6
process
Status: closed Resolution: duplicate
Dependencies: Superseder:
Assigned To: ncoghlan Nosy List: benjamin.peterson, ncoghlan, richard
Priority: normal Keywords:

Created on 2008-07-25 04:09 by richard, last changed 2008-07-26 07:10 by ncoghlan. This issue is now closed.

Messages (5)
msg70240 - (view) Author: Richard Jones (richard) * (Python committer) Date: 2008-07-25 04:09
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.
msg70251 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2008-07-25 12:33
Please see #2751.
msg70289 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2008-07-26 06:40
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.
msg70290 - (view) Author: Richard Jones (richard) * (Python committer) Date: 2008-07-26 06:48
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 :)
msg70291 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2008-07-26 07:10
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
2008-07-26 07:10:37ncoghlansetmessages: + msg70291
2008-07-26 06:48:32richardsetmessages: + msg70290
2008-07-26 06:40:09ncoghlansetmessages: + msg70289
2008-07-25 12:33:07benjamin.petersonsetstatus: open -> closed
nosy: + benjamin.peterson
resolution: duplicate
messages: + msg70251
2008-07-25 07:09:02georg.brandlsetassignee: ncoghlan
nosy: + ncoghlan
2008-07-25 04:10:58richardsettype: behavior
2008-07-25 04:09:06richardcreate