【发布时间】:2012-02-11 10:22:59
【问题描述】:
在 $PYTHONPATH 或 sys.path 中获取软件包版本的推荐方法是什么?我记得 pkg_resource 模块对此有一些功能,但我找不到任何相关信息。请不要向我指出使用 version.py 文件并以某种方式阅读它的解决方案。使用 pkg_resources 是可行的方法,但究竟如何?
【问题讨论】:
标签: python pkg-resources
在 $PYTHONPATH 或 sys.path 中获取软件包版本的推荐方法是什么?我记得 pkg_resource 模块对此有一些功能,但我找不到任何相关信息。请不要向我指出使用 version.py 文件并以某种方式阅读它的解决方案。使用 pkg_resources 是可行的方法,但究竟如何?
【问题讨论】:
标签: python pkg-resources
>>> 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
pkg_resources.get_distribution('Pillow').version 为我工作。其他有效的包是numpy、scipy。 os、math 无效。
我发现使用各种可用的工具非常不可靠(包括this other answer 提到的最好的pkg_resources),因为它们中的大多数并不涵盖所有情况。例如内置模块和未安装但只是添加到 python 路径的模块(例如通过您的 IDE)。由于我们需要一种可靠的方法来获取 any 包、模块或子模块的版本,因此我最终写了getversion。使用起来非常简单:
from getversion import get_module_version
import foo
version, details = get_module_version(foo)
详情请参阅documentation。
【讨论】: