On 10/29/2015 5:18 PM, Laura Creighton wrote: > In a message of Thu, 29 Oct 2015 15:50:30 -0500, Ryan Gonzalez writes: >> Why not just check the path of the imported modules and compare it with the Python library directory? > > My friend Åsa who is 12 years old suggested exactly this at the club. This was my first idea, until I realized that it would be even better to avoid shadowing in the first place. > If this works then I will be certain to mention this to her. As far as I can tell, comparison in not foolproof, even if done carefully. This is a proper stdlib import. >>> import string >>> string.__file__ 'C:\\Programs\\Python35\\lib\\string.py' If we look at suffixes, the only part guaranteed, after changing Windows' '\\' to '/', is '/lib/string.py'. Now suppose someone runs python in another 'lib' directory containing string.py. >>> import string >>> string.__file__ 'C:\\Users\\Terry\\lib\\string.py' Same suffix. Let's try prefixes. >>> import os.path >>> import sys >>> os.path.dirname(string.__file__) in sys.path False This is True for the stdlib import. Hooray. But this requires more imports, which also might be shadowed. Having '' at the front of sys.path is a real nuisance when one wants to guaranteed authentic stdlib imports. -- Terry Jan Reedy
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