Ihr Problem war, dass Sie bereits die Dylib in Ihren Python -Dolmetscher geladen hatten. Nur wieder aufbauen, wirkt sich das nicht aus, was Sie in den Speicher haben.
Nur noch einen machen LoadLibrary
kann die Bibliothek neu laden oder nicht, und es gibt keine Möglichkeit, sie dazu zu zwingen.
Es gibt auch keine Möglichkeit, Bibliotheken zu entladen und neu zu laden ctypes
. Der Hauptgrund ist, dass es auf allen Plattformen keinen sicheren Weg gibt - in der Tat vor 10.4, OS X selbst war eine solche Plattform. (Und Python hat immer noch Aktueller Quellcode im Baum Unterstützung vor dem 10.4 OS X in ctypes
.) Aber auch zu versuchen, ein Modell zu entwickeln, das die Dinge auf jeder Plattform auf jeden Fall macht, ist nicht gerade trivial. So, ctypes
Versucht es nicht.
Wenn Sie es wirklich tun müssen, die _ctypes
Modul darunter ctypes
Im Allgemeinen exportiert die erforderlichen Funktionen in Python. Wenn Sie die Namen für Ihre Plattform kennen, können Sie sie mit finden help(_ctypes)
, oder durch Blick die Quelle.
Kurz gesagt, auf den meisten modernen POSIX -Plattformen (einschließlich OS X 10.5+) ist es _ctypes.dlclose(mydll._handle)
, während bei Win32, ist es _ctypes.FreeLibrary(mydll._handle)
. In beiden Fällen, wenn Sie jemals verwenden mydll
Auch hier sollten Sie für einen Segfault beten (oder alle Funktionen oder Werte, auf die Sie sich darauf beziehen). Sie können auch beim Beenden Segfault. Und unter Windows kann es die Bibliothek möglicherweise nicht kostenlos frei haben, wenn Sie sie bitten, und in einigen Fällen müssen Sie die Bibliothek fragen, ob sie bereit ist zu entladen das FreeLibrary
Dokumente über MSDN und natürlich die Manpage für dlclose(3)
Bei jedem POSIX -System, das Ihnen wichtig ist.
Im Allgemeinen ist es eine viel bessere Idee, stattdessen einen neuen Interpreter -Prozess zu starten.