user modules

Juho Schultz juho.schultz at
Thu Oct 5 21:19:20 CEST 2006

Cameron Walsh kirjoitti:

> Hi,
> I'm writing a python program to analyse and export volumetric data.  To
> make development and extension easier, and to make it more useful to the
> public when it is released (LGPL), I would like to enable users to place
> their own python files in a "user_extensions" directory.  These files
> would implement a common interface in order for the main program to be
> able to read them and execute the necessary code.
> My question is what is the best way of implementing this?
> I have investigated importing them as modules, but unless the user
> modifies the main program I cannot see how the main program can learn of
> the existence of specific modules.
> For example:
> from user_modules import *
> # directory 'user_modules' contains allowing this
> # From here I would need a list of the imported modules, in order to
> # execute a common command on each of them, such as
> for module in imported_modules:
> 	module.initialise()
> 	module.get_tab_window()
> How do I get from the first bit to the second bit, or is there a better
> way of obtaining the functionality I need?
> --Cameron.
Sorry... I was typing faster than reading or thinking.

You could have a file within user_extensions with
__all__ = ["package1", "package2"]

If you want every python file within some directory in here, you can
auto-generate the file in user_extension before importing.
(Or you could have some sort of tester for new .py files detected and
only after you are sure it works, add it.)

from user_extensions import *

would import everything mentioned in __all__. You also have access to
their names through

The last step would be to put the modules into a list. After the

user_ext_list = [eval(elem) for elem in user_extensions.__all__ ]
for ext in user_ext_list:

More information about the Python-list mailing list