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.

Author brett.cannon
Recipients Arfrever, brett.cannon, scoder
Date 2012-08-11.23:35:13
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1344728118.06.0.815710597304.issue15623@psf.upfronthosting.co.za>
In-reply-to
Content
The trigger of that exception is importlib._bootstrap._sanity_check() (http://hg.python.org/cpython/file/5e025dc7d728/Lib/importlib/_bootstrap.py#l1466). It's called very early on to verify certain things, including that the parent package is already loaded when importing a submodule. It's that last bit that's failing.

If you look at 3.2 vs. 3.3 for imp.load_dynamic() which does extension module loading for importlib, there is essentially no change, even as far as looking into Python/importdl.c:_PyImport_LoadDynamicModule() (http://hg.python.org/cpython/file/5e025dc7d728/Python/import.c#l1773 vs. http://hg.python.org/cpython/file/3654c711019a/Python/import.c#l3446).

The problem is that the check for the parent module is also in Python/import.c from 3.2 so this isn't a new check. Is it possible that Cython is doing something differently now that it didn't do before? I know you said this worked in 3.2 and earlier, Stefan, but was that with the same version of Cython? Did the actual C call and setup for that call change? Otherwise I can't think of how anything specifically changed between 3.2 and 3.3 that would fundamentally change this.
History
Date User Action Args
2012-08-11 23:35:18brett.cannonsetrecipients: + brett.cannon, scoder, Arfrever
2012-08-11 23:35:18brett.cannonsetmessageid: <1344728118.06.0.815710597304.issue15623@psf.upfronthosting.co.za>
2012-08-11 23:35:17brett.cannonlinkissue15623 messages
2012-08-11 23:35:13brett.cannoncreate