[Python-Dev] PEP 395: Module Aliasing
Nick Coghlan
ncoghlan at gmail.com
Sat Mar 5 01:38:38 CET 2011
More information about the Python-Dev mailing list
Sat Mar 5 01:38:38 CET 2011
- Previous message: [Python-Dev] PEP 395: Module Aliasing
- Next message: [Python-Dev] PEP 395: Module Aliasing
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sat, Mar 5, 2011 at 2:22 AM, Fred Drake <fdrake at acm.org> wrote: > On Fri, Mar 4, 2011 at 10:59 AM, <exarkun at twistedmatrix.com> wrote: >> Something to consider here is how this will interact with Python files which >> are _not_ modules. I'm a little uneasy about having sys.modules["trial"] >> refer to the module defined by /usr/bin/trial. > > I've long held the position that modules and scripts are distinct, and > should never share a source file. All the work that's going into > dealing with this just reinforces my position. While I actually have a lot of respect for that point of view (the traps in PEP 395 can be read as a list of justifications for it!), "python -m timeit", "python -m test", "python -m site" and assorted other instances in the stdlib disagree with it. I don't think a purity argument is going to fly here, because the practice of allowing executable modules is just so damn useful for utility functionality where a developer doesn't want to worry about global namespace collisions on the system path . If we turned every module we have in the stdlib with a little snippet of directly executable functionality at the bottom into an installed script, I assume the distro packagers would either outright ignore us or howl the place down with cries of namespace pollution (and they'd be right to do so - the "-m" switch *originated* in a discussion about making timeit easier to invoke on different parallel Python installations without running into namespace collision problems on the system path). Besides, this particular ship really sailed way back in the early days of Python's history when the "if __name__ == '__main__':" convention was established to allow the same source file to behave differently depending on how it was invoked (either as a module or as a script). All PEP 395 is about is trying to make the way that works line up more closely with people's intuitions. However, as a slight tangent, note that one of the positive side effects of the __main__.py file approach to directory and package execution is that it *does* promote keeping the script behaviour and the module behaviour in separate files. Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
- Previous message: [Python-Dev] PEP 395: Module Aliasing
- Next message: [Python-Dev] PEP 395: Module Aliasing
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list