2011-02-14 62 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()