首页 > 解决方案 > 在 Python 2.7 中安全卸载/重新加载 C++ dll(将 dll 替换为新版本)

问题描述

我在大多数其他问题的背景下问这个问题是 5-10 岁关于这个主题,并给出以下

我可以成功在两个版本之间切换.pyd如下

import sys
sys.path.append(r'\path\to\ver_1.0')
import my_dll                    # imports ver 1.0
print my_dll.release_version()
sys.path.pop(-1)
del sys.modules['my_dll']        # remove module dict ref
from IPython import get_ipython  # just in case you run in iPython
get_ipython().magic('reset -sf') # need to remove history!
del my_dll                       # delete the import object

import _ctypes                   # release the library handle
import ctypes
dll = ctypes.CDLL('my_dll.pyd')
_ctypes.FreeLibrary(dll._handle) # for some reason it needs to be
_ctypes.FreeLibrary(dll._handle) # done twice.

sys.path.append(r'\path\to\ver_1.1')
import my_dll
print my_dll.release_version()

通过根据以下输出reload重新加载 C++ 来克服失败.pyd

Version 1.0
Version 1.1

我的问题是,我留下了一个极其脆弱的 python 生态系统,几乎在任何新的函数调用时都会崩溃。

是否有更新的方法来执行此操作?

参考

标签: pythonc++windows

解决方案


推荐阅读