首頁  >  問答  >  主體

python - Pyd如何做熱更新?

現在做了一個PC客戶端的插件更新系統。以前插件是.py後綴的。沒什麼問題。但是最近用cython編譯成pyd就有問題了。當主程式import pyd這個模組的時候,就刪不掉了。提示文件佔用。只有當主程式關閉後,才能刪除。但這樣就失去了熱更新的意義。有沒有辦法可以動態卸載pyd或是有更好的辦法?

import xxpyd
import sys

print 'xxpyd' in sys.modules
del sys.modules['xxpyd']
print 'xxpyd' in sys.modules

import time
time.sleep(100)

及時這樣,刪除了 sys.modules,pyd也是刪不掉。

仅有的幸福仅有的幸福2685 天前1304

全部回覆(3)我來回復

  • PHP中文网

    PHP中文网2017-06-13 09:26:40

    目前有一種折中的方案,用一個插件管理類別去控制導入和獲取pyd,優點就是可以隨意次數的熱更新,缺點就是所有引用的import語法都要換成插件管理類去 import

    回覆
    0
  • 怪我咯

    怪我咯2017-06-13 09:26:40

    導入的pyd檔案如果刪除不掉,能否每次用新的pyd檔案去更新,如20170616.pyd(只是例子),其他舊的檔案在每次停主程式或其他時機刪除。

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-13 09:26:40

    pyd 本質就是 dll

    有 dll地獄一說,形容dll難於做版本管理

    回覆
    0
  • 取消回覆