<div dir="ltr">Yeah, one should never add a module to sys.path that has a __init__.py file.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 14, 2018 at 11:25 AM, Brendan Barnwell <span dir="ltr"><<a href="mailto:brenbarn@brenbarn.net" target="_blank">brenbarn@brenbarn.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 2018-03-14 04:18, Steven D'Aprano wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Apart from intentionally manipulating sys.modules or the import system,<br>
or playing file system tricks like hard-linking your files, under what<br>
circumstances can this occur by accident?<br>
</blockquote>
<br></span>
        It can occur if a given directory winds up appearing twice on the import path.  For instance, if /foo is on the path and /foo/bar is a package directory with /foo/bar/baz as a subpackage directory, then you can do "from bar import baz" and "import baz" and wind up with two different module objects referring to the same module.<br>
<br>
        This usually happens when code starts adding paths to sys.path.  This is in some sense "manipulating the import system" but it's something that a fair number of libraries do in various contexts, in order to be able to do things like import plugins without requiring the user to make those plugins available on the default import path.<br>
<br>
        For what it's worth, I have been bitten by the problem a few times, although it's not very common.  I think it's worth considering the proposal, but not sure if any change is justified given that the issue is fairly obscure.<span class="HOEnZb"><font color="#888888"><br>
<br>
-- <br>
Brendan Barnwell<br>
"Do not follow where the path may lead.  Go, instead, where there is no path, and leave a trail."<br>
   --author unknown</font></span><div class="HOEnZb"><div class="h5"><br>
______________________________<wbr>_________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/mailma<wbr>n/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/codeofco<wbr>nduct/</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido" target="_blank">python.org/~guido</a>)</div>
</div>