This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Nested namespace imports do not work inside zip archives
Type: behavior Stage: resolved
Components: Versions: Python 3.4, Python 3.5
process
Status: closed Resolution: out of date
Dependencies: Superseder:
Assigned To: Nosy List: Andrey.Antsut, Jonathan Hsu, barry, eric.smith, eric.snow, gregory.p.smith, iritkatriel, ncoghlan, serhiy.storchaka, twouters
Priority: normal Keywords:

Created on 2014-03-12 20:30 by Andrey.Antsut, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
reproduce.zip Andrey.Antsut, 2014-03-12 20:30
Messages (3)
msg213290 - (view) Author: Andrey Antsut (Andrey.Antsut) Date: 2014-03-12 20:30
Importing modules from subdirectories as "implicit namespace packages" (PEP 420) inside a ZIP archive only works one level deep. Imports from within nested namespaces fail with "ImportError: No module named 'XXX'".

I am attaching an archive with example directory/file structure. To reproduce the problem, run the following from where you unzipped it:

python
>>> import sys
>>> sys.path += ['project1', 'project2.zip', 'project3', 'project4.zip']
>>> import parent.child.hello1
Hello 1
>>> import parent.child.hello2
ImportError: No module named 'parent.child.hello2'
>>> import parent.child.hello3
Hello 3
>>> import parent.child.hello4
ImportError: No module named 'parent.child.hello4'
>>> import boo
boo!
>>> import parent.boo
boo!

Tested on WinXP SP3 with Python 3.3.5 and 3.4.0rc3.
msg364937 - (view) Author: Jonathan Hsu (Jonathan Hsu) * Date: 2020-03-24 15:54
It appears this issue has been fixed, as I am unable to reproduce it on Windows 10/Python 3.7:

Python 3.7.7 (tags/v3.7.7:d7c567b08f, Mar 10 2020, 10:41:24) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path += ['project1', 'project2.zip', 'project3', 'project4.zip']
>>> import parent.child.hello1
Hello 1
>>> import parent.child.hello2
Hello 2
>>> import parent.child.hello3
Hello 3
>>> import parent.child.hello4
Hello 4
>>> import boo
boo!
>>> import parent.boo
boo!
msg408056 - (view) Author: Irit Katriel (iritkatriel) * (Python committer) Date: 2021-12-09 00:15
I got the same results as Jonathan.
History
Date User Action Args
2022-04-11 14:57:59adminsetgithub: 65098
2021-12-09 00:15:16iritkatrielsetstatus: open -> closed

nosy: + iritkatriel
messages: + msg408056

resolution: out of date
stage: resolved
2020-03-24 16:05:14thellersetnosy: - theller
2020-03-24 15:54:23Jonathan Hsusetnosy: + Jonathan Hsu
messages: + msg364937
2020-03-18 18:42:16brett.cannonsetnosy: - brett.cannon
2014-11-26 11:53:21thellersetnosy: + theller
2014-11-25 14:39:53brett.cannonsetnosy: + twouters, gregory.p.smith
2014-11-25 09:09:40serhiy.storchakasetnosy: + serhiy.storchaka

versions: + Python 3.5, - Python 3.3
2014-03-13 00:07:07pitrousetnosy: + brett.cannon, ncoghlan, eric.snow
2014-03-12 21:50:06eric.smithsetnosy: + eric.smith
2014-03-12 20:33:52barrysetnosy: + barry
2014-03-12 20:30:25Andrey.Antsutcreate