Mar-17-2020, 05:29 PM
(Jan-01-2020, 02:12 AM)zicklag Wrote: I am looking for a way to get the Python interpreter to release a native Python extension file (.pyd
) so that I can delete the file when running on Windows.
I have a native Python extension, written in Rust, that is named "core" and is compiled to a windows DLL with a.pyd
extension creating the filecore.pyd
. I put thiscore.pyd
file in the root of my Python module which is namedarsenal-blender
.
In myarsenal-blender
python module I import the native library like so:
from . import coreTo be clear, this is all working. I am able to execute the code fromcore
module and it works fine.
My problem is that, after importing thecore
module, I need a way to tell Python to "unload" the module so that Windows will allow me to delete thecore.pyd
file.
The reason I need to be able to do this is becausearsenal-blender
is a Blender plugin and Blender will try to delete thearsenal-blender
folder and everything in it when the plugin is uninstalled. The issue is that Blender, and its Python instance, is still running and thecore.pyd
file is still open in the Python interpreter, so Windows will not allow me to delete the file.
Is there any way for me to get the Python interpreter to release that file so that it can be deleted?
This is only a problem on Windows because Unix is able to simply "unlink" the file while Python is still using it.
Did you ever find a solution to this? Having the same problem