【问题标题】:Getting package version using pkg_resources?使用 pkg_resources 获取软件包版本?
【发布时间】:2012-02-11 10:22:59
【问题描述】:

在 $PYTHONPATH 或 sys.path 中获取软件包版本的推荐方法是什么?我记得 pkg_resource 模块对此有一些功能,但我找不到任何相关信息。请不要向我指出使用 version.py 文件并以某种方式阅读它的解决方案。使用 pkg_resources 是可行的方法,但究竟如何?

【问题讨论】:

    标签: python pkg-resources


    【解决方案1】:
    >>> import pkg_resources
    >>> pkg_resources.get_distribution("PIL").version
    '1.1.7'
    

    【讨论】:

    • 这给了我一个错误:DistributionNotFound: The 'PIL' distribution was not found and is required by the application
    • PIL 只是一个示例包名称。您可以使用您尝试检查版本的任何包的名称。
    • 我已经在环境中安装了 PIL,所以该命令应该可以工作。实际上,pkg_resources.get_distribution('Pillow').version 为我工作。其他有效的包是numpyscipyosmath 无效。
    【解决方案2】:

    我发现使用各种可用的工具非常不可靠(包括this other answer 提到的最好的pkg_resources),因为它们中的大多数并不涵盖所有情况。例如内置模块和未安装但只是添加到 python 路径的模块(例如通过您的 IDE)。由于我们需要一种可靠的方法来获取 any 包、模块或子模块的版本,因此我最终写了getversion。使用起来非常简单:

    from getversion import get_module_version
    import foo
    version, details = get_module_version(foo)
    

    详情请参阅documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-02
      • 2015-01-09
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多