[Python-Dev] avoiding accidental shadowing of top-level libraries by the main module
Nick Coghlan
ncoghlan at gmail.com
Tue Jul 13 00:05:24 CEST 2010
On Tue, Jul 13, 2010 at 7:47 AM, Fred Drake <fdrake at acm.org> wrote:
> On Mon, Jul 12, 2010 at 5:42 PM, Michael Foord
> <fuzzyman at voidspace.org.uk> wrote:
>> I'm sure Brett will love this idea, but if it was impossible to reimport the
>> script being executed as __main__ with a different name it would solve these
>> problems.
>
> Indeed! And I'd be quite content with such a solution, since I
> consider scripts and modules to be distinct.
And here I've been busily blurring that distinction for years ;)
(actually, the whole "name == '__main__'" idiom meant the distinction
was already pretty blurry long before I got involved)
I take it the concrete proposal here is if the filename of a new
module matches either __main__.__file__ or __main__.__cached__, then
that module should be ignored completely for import purposes allowing
a module with the same name later on sys.path to be found?
I'm not sure I like that, I'd be more inclined to just return the
__main__ module in that case rather than letting the search continue
further down sys.path (although I agree the current semantics of
getting two copies of the same module under different names in this
case are less than ideal).
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
More information about the Python-Dev
mailing list