python - Fjernelse af indlæste pyd-filer

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skriver en opdaterer til en applikation. Jeg skal fjerne de gamle filer, som de kører igen. Dette virker fint, indtil jeg rammer dll-filer, som jeg bruger. Af forskellige grunde er jeg nødt til at pakke det \_ssl kompilerede bibliotek med min distribution.


Jeg frigiver først biblioteket, hvilket af en eller anden grund kræver to opkald til rent faktisk at fjerne håndtaget (jeg antager, at der igen er refontering). Efter dette forsøger jeg at fjerne filen. Dette resulterer i, at Python dør med en 0xC0000005, som tilsyneladende er en meget bred exitkode.


import ssl
import ctypes
import \_ctypes

print "Unloading SSL Module"
ssl\_filename = ssl.\_ssl.\_\_file\_\_
dll = ctypes.CDLL(ssl\_filename)
if ssl\_filename.endswith("pyd"):
    \_ctypes.FreeLibrary(dll.\_handle)
    \_ctypes.FreeLibrary(dll.\_handle)
else:
    \_ctypes.dlclose(dll.\_handle)
    \_ctypes.dlclose(dll.\_handle)
print "Deleting current version..."
os.remove(ssl\_filename)
print "Success"


Ved udførelsen får jeg følgende:


Unloading SSL Module

\_\_builtin\_\_ C:path	o\_ssl.pyd 0 Deleting current version...

Process finished with exit code -1073741819 (0xC0000005)


Hvad jeg forventer er, at koden fjerner filen og fortsætter som normalt.

Bedste reference