On 31 July 2010 02:21, Alexander Belopolsky
<alexander.belopol...@gmail.com> wrote:
> On Fri, Jul 30, 2010 at 2:46 PM, Daniel Waterworth
> <da.waterwo...@gmail.com> wrote:
> ..
>> 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.".
>
>
> You can easily disallow importing __main__ module by filename by
> simply giving your script a name that does not end with .py or by
> using say '-' character in the filename.   No change to python itself
> is needed.
>

My problem is not that I'm likely to fall for the same trap twice.
It's that I want to prevent other people from doing so.

@Nick: I suppose the simplest way to detect re-importation in the
general case, is to store a set of hashes of files that have been
imported. When a user tries to import a file where it's hash is
already in the set, a warning is generated. It's simpler than trying
to figure out all the different ways that a file can be imported, and
will also detect copied files. This is less infrastructure than you
were suggesting, but it's not a perfect solution.

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

Reply via email to