I have a directory structure as follows:
from scripts import *
Edit: Here's one way to recursively import everything at runtime...
It uses exec, so there's almost certainly a better way, but it does work (even for arbitrarily nested sub-packages, I think).
__init__.py in top package directory)
import pkgutil __all__ =  for loader, module_name, is_pkg in pkgutil.walk_packages(__path__): __all__.append(module_name) module = loader.find_module(module_name).load_module(module_name) exec('%s = module' % module_name)
I'm not using
__import__(__path__+'.'+module_name) here, as it's difficult to properly recursively import packages using it. If you don't have nested sub-packages, and wanted to avoid the
eval, though, it's one way to do it.
There's probably a better way, but this is the best I can do, anyway.
Original Answer (For context, ignore othwerwise. I misunderstood the question initially):
What does your
scripts/__init__.py look like? It should be something like:
import script1 import script2 import script3 __all__ = ['script1', 'script2', 'script3']
You could even do without defining
__all__, but things (pydoc, if nothing else) will work more cleanly if you define it, even if it's just a list of what you imported.