Skip to content

不退出 python 进程的情况下删除 .pyd 文件

1 - 问题背景

在开发 Blender 插件时,有一个模块需要编译后使用。在 windows 平台上,编译产物为 .pyd 文件 (Windows Native Python Extension)。

插件启用过的状态下,卸载插件时,会因无法删除 .pyd 文件报错,导致卸载失败。

2 - 问题原因

插件启用时,.pyd 文件会被 Blender 的 python 进程 import。

Blender uninstall 插件时,会删除插件目录下的所有文件,包括 .pyd 文件。但因为 Blender 进程的 python 进程仍在运行,占用了 .pyd 文件,所以无法删除。

3 - 解决方案

Python 并未提供 unload 模块的方法,所以无法直接 unload 已经 import 的模块。

但我们可以 hack 一下,先将 ".pyd" 文件移动到临时文件夹,这样原先的插件目录就可以被删除了,临时文件夹会在 Blender 退出后自动被清理。

Released under the MIT License.