Seu problema era que você já tinha o Dylib carregado no seu intérprete Python. Apenas reconstruí -lo não afetará o que você carregou na memória.
Apenas fazendo outro LoadLibrary
Pode ou não recarregar a biblioteca e não há como forçá-la a fazê-lo.
Também não há como descarregar e recarregar as bibliotecas em ctypes
. A principal razão é que não existe uma maneira segura de fazê -lo em todas as plataformas - na verdade, antes de 10.4, o próprio OS X era uma plataforma. (E Python ainda tem Código fonte atual na árvore Para apoiar o pré-10.4 OS X em ctypes
.) Mas também, tentar criar um modelo que faça as coisas da maneira segura em todas as plataformas não é exatamente trivial. Então, ctypes
não tenta.
Se você realmente precisa fazer isso, o _ctypes
módulo abaixo ctypes
Geralmente exporta as funções necessárias para o Python. Se você conhece os nomes da sua plataforma, pode encontrá -los com help(_ctypes)
, ou olhando para a fonte.
Resumidamente, na maioria das plataformas POSIX modernas (incluindo o OS X 10.5+), é _ctypes.dlclose(mydll._handle)
, enquanto estava no Win32, é _ctypes.FreeLibrary(mydll._handle)
. Em ambos os casos, se você usa mydll
Novamente (ou quaisquer funções ou valores que você estava referenciando), você deve orar por um segfault. Você também pode se esgotar na saída. E no Windows, ele pode realmente não libertar a biblioteca quando você solicita e, em alguns casos a FreeLibrary
documentos no msdn e, claro, a manpra para dlclose(3)
Em todos os sistemas POSIX de que você se preocupa.
Em geral, é uma ideia muito melhor iniciar um novo processo de intérprete.