Basically, I have an app and am making it possible for the users to automate it 
by writing python scripts that run against the app's API. It includes PyQt5 
widgets, a QScintilla editor, and a simple API for I/O. Apple’s app store is 
the plan.

Right now I create a new module with types.ModuleType(‘something’), then exec 
the code in the module’s dict. Then when the user saves the script again in my 
editor, it deletes all top-level references in the module’s dict that don’t 
belong to the core list: ['__spec__', '__name__', '__loader__', '__package__', 
'__doc__', '__builtins__’] before running exec again. 

So far this seems to effectively “delete” the old module and re-compile it with 
the updated source. For example I can create Qt Widgets on the module level and 
they are safely deleted when the script is saved.


> On Nov 23, 2014, at 5:56 PM, Ned Batchelder <n...@nedbatchelder.com> wrote:
> 
> On 11/23/14 1:49 AM, Patrick Stinson wrote:
>> If I create a module with imp.new_module(name), how can I unload it so that 
>> all the references contained in it are set to zero and the module is 
>> deleted? deleting the reference that is returned doesn’t seem to do the job, 
>> and it’s not in sys.modules, so where is the dangling reference?
>> 
>> Thanks!
>> 
> 
> This sounds tricky, and possible very difficult to do properly.  Do you mind 
> if I ask what the larger problem is?  Python might not be very good at having 
> modules come and go as you want.
> 
> -- 
> Ned Batchelder, http://nedbatchelder.com
> 
> -- 
> https://mail.python.org/mailman/listinfo/python-list

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to