A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2015-October/142086.html below:

[Python-Dev] If you shadow a module in the standard library that IDLE depends on, bad things happen

[Python-Dev] If you shadow a module in the standard library that IDLE depends on, bad things happenTerry Reedy tjreedy at udel.edu
Thu Oct 29 22:18:29 EDT 2015
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


More information about the Python-Dev mailing list

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