Import semantics?

Dan Stromberg drsalists at gmail.com
Fri Jun 8 18:24:00 EDT 2012


On Fri, Jun 8, 2012 at 3:16 PM, Ethan Furman <ethan at stoneleaf.us> wrote:

> Dan Stromberg wrote:
>
>>
>> Did the import semantics change in cpython 3.3a4?
>>
>> I used to be able to import treap.py even though I had a treap directory
>> in my cwd.  With 3.3a4, I have to rename the treap directory to see
>> treap.py.
>>
>
> Check out PEP 420 -- Implicit Namespace Packages [
> http://www.python.org/dev/peps/pep-0420/]
>

Am I misinterpreting this?  It seems like according to the PEP, I should
have still been able to import treap.py despite having a treap/.  But I
couldn't; I had to rename treap/ to treap-dir/ first.

During import processing, the import machinery will continue to iterate
over each directory in the parent path as it does in Python 3.2. While
looking for a module or package named "foo", for each directory in the
parent path:


   - If <directory>/foo/__init__.py is found, a regular package is imported
   and returned.
   - If not, but <directory>/foo.{py,pyc,so,pyd} is found, a module is
   imported and returned. The exact list of extension varies by platform and
   whether the -O flag is specified. The list here is representative.
   - If not, but <directory>/foo is found and is a directory, it is
   recorded and the scan continues with the next directory in the parent path.
   - Otherwise the scan continues with the next directory in the parent
   path.

Thanks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20120608/fbb9aa68/attachment.html>


More information about the Python-list mailing list