On 31 July 2010 02:21, Alexander Belopolsky <alexander.belopolsky at gmail.com> wrote: > On Fri, Jul 30, 2010 at 2:46 PM, Daniel Waterworth > <da.waterworth at 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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4