On 30 July 2010 18:32, Michael Foord <fuzzy...@voidspace.org.uk> wrote: > On 30/07/2010 17:59, Oleg Broytman wrote: >> >> On Fri, Jul 30, 2010 at 07:26:26AM +0100, Daniel Waterworth wrote: >> >>> >>> @Oleg: ... >>> This is purely CPython bug-fixing/the discussion of >>> implementation choices. >>> >> >> I am not sure it's a bug. > > It isn't a bug but it's a very common *cause* of bugs, even for relatively > experienced Python programmers (this exchange being another case in point). > > Michael > >> By manipulating sys.path (or symlinks in the >> FS) one can import the same file as different modules as many times as >> [s]he wants. Should this be fixed for __main__? I doubt it. Instead of >> making __main__ a special case follow the rule: don't import the same >> module under different paths/names. >> Make your script simply >> >> from test import main >> main() >> >> Oleg. >> > > > -- > http://www.ironpythoninaction.com/ > http://www.voidspace.org.uk/blog > > READ CAREFULLY. By accepting and reading this email you agree, on behalf of > your employer, to release me from all obligations and waivers arising from > any and all NON-NEGOTIATED agreements, licenses, terms-of-service, > shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, > non-compete and acceptable use policies (”BOGUS AGREEMENTS”) that I have > entered into with your employer, its partners, licensors, agents and > assigns, in perpetuity, without prejudice to my ongoing rights and > privileges. You further represent that you have the authority to release me > from any BOGUS AGREEMENTS on behalf of your employer. > > > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > http://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > http://mail.python.org/mailman/options/python-dev/da.waterworth%40googlemail.com >
Having thought it through thoroughly, my preference is for a warning. I don't think it's a good practise to import the __main__ module by filename, as renaming the file will break the code. I got stung after, having dropped into a python interpreter shell and imported the module, I executed a function that uses isinstance. If a warning showed up after importing the module, explaining the problem and suggested that I use __import__('__main__') instead, I would have saved myself a fair amount of time debugging code. This is another case of "Explicit is better than implicit.". It also means that code that relies on the current behaviour will not be broken. @Oleg: yes, but in the __main__ case, it's more difficult to tell that you are importing something under a different name. I suppose the proof is in the pudding, can anyone think of a case where someone has been annoyed that, having imported that same module twice via symlinks, they have had problems relating to modules being independent instances? Thanks, Daniel -- active-thought.com _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com