Jetzt haben wir ein Plug-in-Update-System für den PC-Client. Früher hatte das Plug-in die Endung .py. Kein Problem. Aber in letzter Zeit gibt es ein Problem bei der Verwendung von cython zum Kompilieren in pyd. Wenn das Hauptprogramm das pydModul importiert, kann es nicht gelöscht werden. Prompte Aktenbelegung. Es kann nur gelöscht werden, wenn das Hauptprogramm geschlossen wird. Dies verliert jedoch die Bedeutung eines Hot-Updates. Gibt es eine Möglichkeit, pyd dynamisch zu deinstallieren?
Wenn sys.modules rechtzeitig gelöscht wird, kann auch pyd nicht gelöscht werden. import xxpyd
import sys
print 'xxpyd' in sys.modules
del sys.modules['xxpyd']
print 'xxpyd' in sys.modules
import time
time.sleep(100)
目前有一种折中的方案,用一个插件管理类去控制导入和获取pyd,优点就是可以随意次数的热更新,缺点就是所有引用的import语法都要换成插件管理类去 import
导入的pyd文件如果删除不掉,能否每次用新的pyd文件去更新,如20170616.pyd(只是例子),其他旧的文件在每次停主程序或者其他时机删除。
pyd 本质就是 dll
有 dll地狱一说,形容dll难于做版本管理