On Mon, 2005-10-03 at 16:41, Carsten Haese wrote: > On Mon, 2005-10-03 at 15:52, Jacob Kroon wrote: > > Hi, I'm having some problems with implementing dynamical module loading. > > First let me > > describe the scenario with an example: > > > > modules/ > > fruit/ > > __init__.py > > apple.py > > banana.py > > > > apple.py defines a class 'Apple', banana defines a class 'Banana'. The > > problem lies in the > > fact that I want to be able to just drop a new .py-file, for instance > > peach.py, and not change > > __init__.py, and it should automatically pickup the new file in > > __init__.py. I've come halfway > > by using some imp module magic in __init__.py, but the problem I have is > > that the instantiated > > objects class-names becomes fruit.apple.Apple/fruit.banana.Banana, whild > > I want it to be > > fruit.Apple/fruit.Banana. > > > > Is there a smarter way of accomplishing what I am trying to do ? > > If someone could give me a small example of how to achieve this I would > > be very grateful. > > How about something like this in fruit/__init__.py: > > import os > > fruit_dir = os.path.dirname(__file__) > fruit_files = [x for x in os.listdir(fruit_dir) if (x[-3:]=='.py' and > x!='__init__.py')] > for fruit_file in fruit_files: > module_name = fruit_files[:-3] ^^^^^^^^^^^ This should be fruit_file, of course.
> exec "from %s import *" % module_name > > HTH, > > Carsten. -- http://mail.python.org/mailman/listinfo/python-list