Tried this at the top of db.py and at the top of my controller to no avail. (I replaced the 'from gluon.custom_import import track_changes; track_changes()' with your code).
I guess the persistence of the instantiation is because the interpreter is started once when starting web2py webserver (maybe this does not occur when using apache2 or lighttpd?). On Wednesday, December 12, 2012 6:33:26 PM UTC+1, Massimo Di Pierro wrote: > > Instead of tack_changes() try this: > > from gluon.custom_import import custom_importer as __import__ > > On Wednesday, 12 December 2012 09:19:06 UTC-6, Chr_M wrote: >> >> 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 >>>>>>>> >>>>>>>> --

