如何确定库的版本

时间:2019-07-06 20:49:10

标签: python shared-libraries

当库没有 version 属性时,如何从python代码段确定python库的版本?

以下是Pyvisa库的示例,该库最初没有 version 属性。我已经完成了以下代码,当我无法确定该代码时,它将返回未知版本。

try:
    import visa
    from visa import VisaIOError, Error
    pyvisa_version=0.
    try:
        pyvisa_version=float(visa.__version__)
    except:
        pass
    if pyvisa_version >0.:
        print 'pyvisa version: %f ' % pyvisa_version
    else:
        print 'pyvisa version: unknown'
    if pyvisa_version <= 1.5:
        try:
            from visa import vpp43
        except:
            print 'Cannot import vpp43.'
except:
    print 'Cannot import visa'

在没有 version 属性的情况下,有谁能找到更好的解决方案?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用pkg_resources软件包吗?

import pkg_resources
pkg_resources.get_distribution('visa').version

结果-'1.0.0'

根据我先前所读的内容,当没有 version 属性并且也不依赖于pip时,此方法就可以使用。

但这还取决于是否安装了此软件包。

编辑

此特定程序包具有visa.version模块,该模块只是其中包含版本的.py文件。

file_loc = visa.version

那么您可以从中解析出版本吗?也许更简单的方法..但是一个主意

答案 1 :(得分:0)

是的!这将为您提供系统上每个库的版本。

pip freeze

或适用于python 3

pip3 freeze

它将向您运行它的终端输出一个列表。

以下评论如下:

import os
import glob
d = os.path.dirname('libname'.__file__)
dirs = glob.glob(d+'*')
for d in dirs:
if d.endswith('.dist-info'):
    d = d.split('/')
    f=d[-1]
    f = f.split('-')
    f = f[1:]
    f = ''.join(f)

和'f [:-9]'现在包含版本号。