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
>>>>>>
>>>>>>

-- 



Reply via email to