[Python-ideas] Prevent importing yourself?

Eric Snow ericsnowcurrently at gmail.com
Tue Mar 1 17:47:16 EST 2016


(Wow, I'm late to this thread.)

FTR, the underlying cause is that a script's directory is prepended to
sys.path. [1]  Otherwise importing your script wouldn't be a problem
nearly as often.  This is something I've hoped we could address at
some point. [2]  Note that PEP 395 [3] aimed to help with a number of
related issues and PEP 432 [4] may still help make it easier to sort
out interpreter-startup-related matters like this.  Personally I'm
still in favor of deprecating "sys.path[0] auto-initialisation", but
I'm not gonna hold my breath on that. :)

-eric


[1] https://hg.python.org/cpython/file/7e48300c7f3b/Modules/main.c#l251
     https://hg.python.org/cpython/file/7e48300c7f3b/Lib/runpy.py#l258
[2] http://bugs.python.org/issue13475
[3] http://www.python.org/dev/peps/pep-0395/
[4] http://www.python.org/dev/peps/pep-0432/

On Fri, Jan 29, 2016 at 3:42 PM, Ned Batchelder <ned at nedbatchelder.com> wrote:
> Hi,
>
> A common question we get in the #python IRC channel is, "I tried importing a
> module, but I get an AttributeError trying to use the things it said it
> provided."  Turns out the beginner named their own file the same as the
> module they were trying to use.
>
> That is, they want to try (for example) the "azure" package.  So they make a
> file called azure.py, and start with "import azure". The import succeeds,
> but it has none of the contents the documentation claims, because they have
> imported themselves.  It's baffling, because they have used the exact
> statements shown in the examples, but it doesn't work.
>
> Could we make this a more obvious failure?  Is there ever a valid reason for
> a file to import itself?  Is this situation detectable in the import
> machinery?
>
> --Ned.
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/


More information about the Python-ideas mailing list