2013-03-06 58 views
3

我正在爲GPS的IDE的插件,我想它有兩個版本: 1. GPS插件 - 與GPS運行 2.獨立的應用程序 - 運行沒有GPS依賴注入python(取決於模塊的可用性)

插件的一個功能是突出顯示行。當插件作爲獨立的應用程序運行時,它是不可能的。我爲此創建了gpshelper類,它導入了GPS模塊。導入作爲獨立應用程序運行時拋出ImportException(因爲GPS模塊不可用)。 我不知道該如何將這個gpshelper模塊注入到我的插件中。

突出顯示在突出顯示方法調用期間執行(此方法調用gpshelper)。

它是確定,當亮點方法裏面我這樣做:

try: 
    import gpshelper 
except ImportError: 
    warnings.warn('Program is running as python app (not GPS plugin)') 

也許有一些其他/更好的方式該怎麼做?

+0

高亮方法是否被多次調用?如果是這樣,當錯誤發生時,你可以設置一個像USE_GPS = False的變量,然後只執行一次try/except塊。 – 2013-03-06 23:59:09

+0

它被稱爲每次用戶操作一次(雙擊gtk.treeview列表後)。但我的問題更多的是關於「乾淨的代碼」而不是性能。 – 2013-03-07 03:46:59

回答

2

將gps_highlight例程定義爲導入gpshelper的try部分的一部分。然後從現有的代碼中調用該例程。在除了部分定義一個虛擬gps_highlight函數。通過這種方式,您可以保持呼叫代碼的清潔:

import warnings 

try: 
    import gpshelper 
    def gps_highlight(*args, **kw): 
     return gpshelper.highlight(*args, **kw) 
except ImportError: 
    warnings.warn('Program is running as python app (not GPS plugin)') 
    def gps_highlight(*args, **kw): 
     return None 

# after this you can safely call gps_highlight with the right parameters 
# as needed by gpshelper.highlight