您的问题是,您已经将Dylib加载到Python解释器中。只是重建它不会影响您已加载到内存中的内容。
只是做另一个 LoadLibrary
可能会或可能不会重新加载库,也无法强迫它这样做。
也没有办法可以卸载和重新加载库 ctypes
. 。主要原因是在所有平台上都没有安全的方法 - 实际上,在10.4之前,OS X本身就是这样的平台。 (而Python仍然有 树中的当前源代码 支持10.4 os x in ctypes
。所以, ctypes
不尝试。
如果您真的需要这样做, _ctypes
下面的模块 ctypes
通常将必要的功能导出到Python中。如果您知道平台的名称,可以找到它们 help(_ctypes)
, ,或通过看 来源.
简而言之,在大多数现代POSIX平台(包括OS X 10.5+)上 _ctypes.dlclose(mydll._handle)
, ,在Win32上,是 _ctypes.FreeLibrary(mydll._handle)
. 。无论哪种情况,如果您都使用 mydll
再次(或您从中引用的任何功能或值),您应该为segfault祈祷。您也可以在退出时进行策略。在Windows上,当您询问库时,它实际上可能不会释放库,在某些情况下,您必须询问图书馆是否准备就绪,然后才能卸载,并且有线程的复杂性,并且……好吧,请阅读这 FreeLibrary
关于MSDN的文档,当然还有 dlclose(3)
在您关心的每个POSIX系统上。
通常,仅启动新的解释器流程是一个更好的主意。