簡單說明一下要如何漂亮的 reload modules,最關鍵的一步就是在每次 import module 就將這個 module 記錄在一個 dictionary 裡,然後在需要 reload 的時候,就以 import 時相反的順序一個一個 reload 回去,要做到這樣的事需將 Python 的 builtins.__import__ 導到另一個自行定義的 import function 裡,原文的作者也有分享這個 reloader 在 https://github.com/jparise/python-reloader 有興趣的人也可以直接去下載來試試看,使用方法很簡單,解壓縮後我是執行 mayapy setup.py install 就會將 reloader 這個 module 裝到你的 Maya Python 目錄底下,然後在 usersetup.py 裡加上
import reloader reloader.enable()
之後,只要呼叫到 import xxxModule, reloader 就會建立一個有關這個 xxxModule 的 dictionary,當有需要 reload 的時候,使用
reloader.reload(xxxModule)
就行了,之後在寫 python 的東西時,就可以邊改邊測試,方便多了 :D
2 comments:
reloader 這個組件 導致我的 import maya.mel as mm 不能正常工作
import maya.mel可以工作 但是當我:
print (maya.mel.__file)的時候
結果是D:\Program Files\Autodesk\Maya2010\Python\lib\site-packages\maya\__init__.pyc
當我 import maya.cmds的時候
結果依然是上述文件
能否再提供一點更詳細的說明呢?
例如是在執行完 mayapy setup.py install 後 import maya.mel as mm 就無法正常工作,還是在啟動 reloader 之後才有問題,或是嘗試 reload maya.mel 或是 maya.cmds 後才發生這樣的情況,如果還是有問題,建議先將你的 D:\Program Files\Autodesk\Maya2010\Python\lib\site-packages\reloader 相關的 python 檔先移除,看 maya.mel 是不是能正常的運作,另外也可以使用
import sys
for module in sys.modules:
print module
來檢查 maya 的 modules 是不是都有正常的載入,希望有些幫助
Post a Comment