python - Pyd如何做熱更新?
問題描述
現(xiàn)在做了一個(gè)PC客戶端的插件更新系統(tǒng)。以前插件是.py后綴的。沒什么問題。 但是最近用cython編譯成pyd就有問題了。當(dāng)主程序import pyd這個(gè)模塊的時(shí)候,就刪不掉了。提示文件占用。只有當(dāng)主程序關(guān)閉后,才能刪除。 但這樣就失去了熱更新的意義。 有沒有什么辦法能動(dòng)態(tài)卸載pyd或者有更好的辦法?
import xxpydimport sysprint ’xxpyd’ in sys.modulesdel sys.modules[’xxpyd’]print ’xxpyd’ in sys.modulesimport timetime.sleep(100)
及時(shí)這樣,刪除了 sys.modules,pyd也是刪不掉。
問題解答
回答1:目前有一種折中的方案,用一個(gè)插件管理類去控制導(dǎo)入和獲取pyd,優(yōu)點(diǎn)就是可以隨意次數(shù)的熱更新,缺點(diǎn)就是所有引用的import語法都要換成插件管理類去 import
回答2:導(dǎo)入的pyd文件如果刪除不掉,能否每次用新的pyd文件去更新,如20170616.pyd(只是例子),其他舊的文件在每次停主程序或者其他時(shí)機(jī)刪除。
回答3:pyd 本質(zhì)就是 dll
有 dll地獄一說,形容dll難于做版本管理
相關(guān)文章:
1. Python從URL中提取域名2. 實(shí)現(xiàn)bing搜索工具urlAPI提交3. node.js - windows10下的npm全局路徑的復(fù)原或者將npm徹底刪除?4. python執(zhí)行cmd命令,怎么讓他執(zhí)行類似Ctrl+C效果將其結(jié)束命令?5. python - scrapy url去重6. MySQL主鍵沖突時(shí)的更新操作和替換操作在功能上有什么差別(如圖)7. mysql在限制條件下篩選某列數(shù)據(jù)相同的值8. 關(guān)于mysql聯(lián)合查詢一對(duì)多的顯示結(jié)果問題9. 數(shù)據(jù)庫 - Mysql的存儲(chǔ)過程真的是個(gè)坑!求助下面的存儲(chǔ)過程哪里錯(cuò)啦,實(shí)在是找不到哪里的問題了。10. python - Django有哪些成功項(xiàng)目?
