【问题标题】:How to determine the version of a library如何确定库的版本
【发布时间】:2019-07-06 20:49:10
【问题描述】:

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

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

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属性的情况下,有没有人有更好的解决方案?

【问题讨论】:

    标签: python shared-libraries


    【解决方案1】:

    你可以试试 pkg_resources 包吗?

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

    结果 - '1.0.0'

    从我之前的阅读来看,这种方法在没有 version 属性并且也不依赖 pip 的情况下有效。

    但这也取决于是否安装了这个包..

    编辑

    这个特定的包有一个 visa.version 模块,它只是一个 .py 文件,其中包含版本..

    file_loc = visa.version

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

    【讨论】:

      【解决方案2】:

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

      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]' 现在包含版本号。

      【讨论】:

      • 我不确定我是否清楚。我想通过在我不知道的机器上运行的一段 python 代码来确定版本。依赖安装 pip 是否安全?我不应该期望我的代码在装有 python 和 pyVisa 但没有安装 pip 的机器上使用吗?
      • 好的,你知道它有什么操作系统吗?
      猜你喜欢
      • 2014-06-12
      • 2020-11-08
      • 2011-02-12
      • 1970-01-01
      • 2015-07-15
      • 2017-03-04
      • 1970-01-01
      • 2018-05-02
      • 2019-11-26
      相关资源
      最近更新 更多