2017-02-25 18 views
1

中定義。我想寫兩個類似庫的包裝,這會給我一個公共的API給他們兩個。例如:警告:'除了ImportError'的try塊中的'X'也應該在塊

# file XY.version.py 
try: 
    import X # primary library 
    __version__ = X.__version__ 
except ImportError: 
    import Y # fallback library 
    __version__ = Y.__y_version__ 

PyCharm顯示警告"'X' in try block with 'except ImportError' should also be defined in except block"。有沒有簡單的方法來重組代碼來擺脫消息?當然,我可以在開始或except塊中執行X = None,但由於我只需要導入X以獲取版本,因此這種做法很人造。理想情況下,我不想在名稱空間中保留導入的痕跡。當然,我理論上可以在try塊的末尾做del X,但這是我在任何地方都沒有看到的東西,所以我認爲人們不會使用它並順便說一句。它不會刪除PyCharm中的警告消息。

注:我知道這與Checking module name inside 'except ImportError'類似,但我相信這是不一樣的。

回答

0

什麼沿着線的東西:

# file XY.version.py 
try: 
    import X # primary library 
    __version__ = X.__version__ 
except ImportError: 
    import Y as X # fallback library 
    __version__ = X.__y_version__ 

然後用X無處不在。