Carsten Haese wrote: > 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 >>
Wouldn't __import__(module_name) be better. regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC www.holdenweb.com PyCon TX 2006 www.python.org/pycon/ -- http://mail.python.org/mailman/listinfo/python-list