2011-02-14 25 views

回答

2

通過pkg_resources可能會有幫助,但你需要使用的軟件包名稱:

>>> import pkg_resources 
>>> env = pkg_resources.Environment() 
>>> env['sqlalchemy-migrate'][0].version 
'0.6.2.dev' 
2

如果庫不知道它自己的版本,那麼你基本上是SOL。但是,如果您想要支持的某個版本在代碼出現「錯誤」路徑時會引發異常,則可以使用try/except塊。

+0

是啊,這就是我所擔心的... – 2011-02-14 20:04:15

0

偶爾可以評估庫的路徑,這將是在某處... /usr/lib/python2.6/site-packages/XlsXcessive-0.1.6-py2.6.egg

3

這是Python中,這樣做的接受的方式通常是調用該行爲不同取決於圖書館的東西在您安裝的版本上,如下所示:

import somelibrary 
try: 
    somelibrary.this_only_exists_in_11() 
    SOME_LIBRARY_VERSION = 1.1 
except AttributeError: 
    SOME_LIBRARY_VERSION = 1.0 

更優雅的方式可能是創建包裝函數。

def call_11_feature(): 
    try: 
     somelibrary.this_only_exists_in_11() 
    except AttributeError: 
     somelibrary.some_convoluted_methods() 
     somelibrary.which_mimic() 
     somelibrary.the_11_feature()