当库没有 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 属性的情况下,有谁能找到更好的解决方案?
答案 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]'现在包含版本号。