Because I do not know the name of the module beforehand (it comes from a database).
'import class2' does not work either, I still need to reload() the module. I discovered also that the instantiation of class2 is persistant between requests when I do not reload the modules. I initialize a list in class1 and then add data from the database to this list. With every request the list grows with the same data from the database so I end up with a load of duplicate data in the list. I have to say that I am quite new to Python, so maybe this persistence is a Python thing... Regards, Chris On Wednesday, December 12, 2012 3:12:27 PM UTC+1, Massimo Di Pierro wrote: > > Why do you use __import__(class2) instead of > > import class2 > > If you do the latter, does track changes work? > > On Wednesday, 12 December 2012 01:33:41 UTC-6, Chr_M wrote: >> >> Python 2.7.3 >> Web2py 2.2.1 >> >> The situation: >> >> In modules directory I have a subdirectory with two files class1.py and >> class2.py. This is a package (empty __init__.py is present). class2.py >> imports class1.py and Class2 inherits from Class1. My controller >> dynamically imports class2 with the function __import__(class2). On top of >> my db.py model I call the track_changes part. The modules do not seem to be >> updated if I change code in class1.py or class2.py. >> >> I have solved it for now by reloading all the modules with reload() after >> I import them. So after I dynamically import class2 in my controller I call >> reload(class2). In class2.py after the import of class1 I call >> reload(class1). This is the only way I get the code changes to work in both >> files. >> >> It seems that the track_changes part is not working in this situation or >> something? Or is there another solution? >> >> Regards, Chris >> >> >> On Monday, December 10, 2012 4:34:33 PM UTC+1, Massimo Di Pierro wrote: >>> >>> It should work when you do it. >>> >>> Which python version? Which web2py version? >>> >>> On Monday, 10 December 2012 02:57:20 UTC-6, Chr_M wrote: >>>> >>>> I call this function at the top of my db.py model file. Is this not the >>>> correct location? >>>> >>>> Regards, Chris >>>> >>>> >>>> On Sunday, December 9, 2012 11:55:06 PM UTC+1, Massimo Di Pierro wrote: >>>>> >>>>> This has come up before. >>>>> >>>>> from gluon.custom_import import track_changes; track_changes() >>>>> >>>>> must be a model file, before the modules are imported, not in the >>>>> modules themselves which are otherwise cached and therefore the line may >>>>> or >>>>> may not be executed. >>>>> >>>>> Massimo >>>>> >>>>> On Sunday, 9 December 2012 15:34:09 UTC-6, Chr_M wrote: >>>>>> >>>>>> Sometimes the changes in the code of a module (in the modules >>>>>> directory) are not working when requesting the url that uses these >>>>>> modules. >>>>>> in the modules directory I have a subdirectory with python files that >>>>>> form >>>>>> a package (__init__.py file in this subdirectory). I have added >>>>>> >>>>>> from gluon.custom_import import track_changes >>>>>> track_changes() >>>>>> >>>>>> in the first model that gets called, but still sometimes code changes >>>>>> are not working. I noticed that the py-files in the modules dir get >>>>>> compiled to pyc-files. But at one point (it looks to be randomly) these >>>>>> are >>>>>> not compiled anymore when I change code in the py-files. But even when I >>>>>> remove these pyc-files, the code changes are still not working when >>>>>> requesting the url. >>>>>> >>>>>> Am I missing something? Is there a cache I can clear or something? I >>>>>> now have to restart web2py to make the code changes work... >>>>>> >>>>>> Thanks. >>>>>> >>>>>> Regards, Chris >>>>>> >>>>>> --

