Eric Pavey wrote:
On Fri, Nov 20, 2009 at 4:09 AM, Kent Johnson <ken...@tds.net> wrote:

On Thu, Nov 19, 2009 at 9:31 PM, Eric Pavey <warp...@gmail.com> wrote:
Say I have this package layout

\myPackage

__init__.py
moduleA.py
moduleB.py

Is there a way (and I'm sure there is...) to query, for a given package
level, which modules live under it?
I thought I could do it like so:

import myPackage
goodQualityInfo = dir(myPackage)
One way to do this is to include an __all__ attribute in __init__.p]:
__all__ = ['moduleA', 'moduleB']

Then instead of dir(myPackage) use myPackage.__all__.

The name is standard though it is usually used for a slightly different
purpose:
http://docs.python.org/tutorial/modules.html#importing-from-a-package

Kent


Thanks.  I was considering that too, but I want to be able to have people
drop modules in that dir and "be done with it":  Not also have them also
need to update __all__ in __init__.py
Appreciate the suggestion though.
My current hacky plan is just query the location on disk of the imported
package, then do a dir search for .py files in that dir, and process those.
Seems clunky though.

Doesn't seem clunky to me. And if you do it in __init__.py, you can use the __file__ attribute to get your base directory. Just put the results in __all__ and you combine both ideas.

DaveA
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to