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 jordanb
Recipients georg.brandl, jordanb
Date 2009-07-09.15:07:22
SpamBayes Score 7.895906e-13
Marked as misclassified No
Message-id <1247152045.93.0.157775961524.issue6448@psf.upfronthosting.co.za>
In-reply-to
Content
Hi. I just spent a while fighting with imp.find_module because I was
trying to pass the path as a string, rather than a string embedded in a
list:

result = find_module('mod', '/path')

rather than

result = find_module('mod', ['/path'])

The issue is compounded by an incredibly unhelpful error message:

ImportError: No frozen submodule named /path.mod

Now the documentation *does* say that path should be a list, if you read
it carefully, so perhaps it was just my reading comprehension. But doing
a google search I found a discussion from 2006 along the same lines:

http://www.techlists.org/archives/programming/pythonlist/2006-01/msg01445.shtml

So I thought it might be good to clarify that a string will not work.
Perhaps the wording could be changed to something like this:


   Try to find the module *name* on the search path *path*.  The
   *path* argument is a list of directory names. Each directory is
   searched for files with any of the suffixes returned
   by :func:`get_suffixes` above.  Invalid names in the list are
   silently ignored (but all list items must be strings).  If
   *path* is omitted or ``None``, the list of directory names
   given by ``sys.path`` is searched, but first it searches a few
   special places: it tries to find a built-in module with the
   given name (:const:`C_BUILTIN`), then a frozen
   module (:const:`PY_FROZEN`), and on some systems some other
   places are looked in as well (on Windows, it looks in the
   registry which may point to a specific file).

I think what is confusing is the conditional about the type of 'path',
The possibilities are 'list' or 'not present' (or None) but when I read
it I think I saw the 'not present' option as being implicit, and the
conditional implying that it could be a string or a list of strings.
From the discussion above it seems like the other person had the same
trouble, so removing the conditional should be enough to make it clear
that path *must* be a list if it exists.
History
Date User Action Args
2009-07-09 15:07:26jordanbsetrecipients: + jordanb, georg.brandl
2009-07-09 15:07:25jordanbsetmessageid: <1247152045.93.0.157775961524.issue6448@psf.upfronthosting.co.za>
2009-07-09 15:07:23jordanblinkissue6448 messages
2009-07-09 15:07:22jordanbcreate