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 ncoghlan
Recipients cykerway, eric.snow, ncoghlan
Date 2018-04-06.14:22:23
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1523024544.08.0.682650639539.issue33210@psf.upfronthosting.co.za>
In-reply-to
Content
I think this is actually two distinct problems, one documentation one (which should be addressed in the online docs for all currently maintained versions), and one actual functional issue.

The documentation issue is the one you've reported: in order for the recursive descent to work in walk_packages given the current algorithm, then the combination of the given prefix, and the current global import configuration must allow that package to actually be imported. While there is a note about that limitation, it's currently thoroughly unclear.

The functional issue is two-fold:

1. pkgutil.iter_modules() doesn't identify PEP 420 namespace packages correctly (it ignores them as not being potential packages)

2. The recursive import to check pkg.__path__ uses a name based global __import__ rather than the more state independent https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly technique

It's that second problem that introduces the "prefix must be set to get useful output" behaviour that you're currently seeing.
History
Date User Action Args
2018-04-06 14:22:24ncoghlansetrecipients: + ncoghlan, eric.snow, cykerway
2018-04-06 14:22:24ncoghlansetmessageid: <1523024544.08.0.682650639539.issue33210@psf.upfronthosting.co.za>
2018-04-06 14:22:24ncoghlanlinkissue33210 messages
2018-04-06 14:22:23ncoghlancreate