如何通过代码获取 python 模块的版本号? [复制]

Posted

技术标签:

【中文标题】如何通过代码获取 python 模块的版本号? [复制]【英文标题】:How do I get a python module's version number through code? [duplicate] 【发布时间】:2011-04-01 06:01:05 【问题描述】:

我正在尝试获取我使用的几个特定模块的版本号。我可以存储在变量中的东西。

【问题讨论】:

相关:Checking Python module version at runtime 【参考方案1】:

使用pkg_resources(setuptools 的一部分)。从PyPI 安装的任何东西都至少有一个版本号。不需要额外的包/模块。

>>> import pkg_resources
>>> pkg_resources.get_distribution("simplegist").version
'0.3.2'

【讨论】:

【参考方案2】:

来自 Matt 的通用答案,执行 dir(YOURMODULE) 并查找 __version__VERSIONversion。大多数模块都喜欢__version__,但我认为numpy使用version.version

【讨论】:

请注意__version__ 是新代码的首选标准,正如PEP8 所推荐的那样。见Standard way to embed version into Python package? print(YOURMODULE.__version__) 如何从 REPL 执行此操作而不实际执行导入? 它似乎只适用于定义__version__的包,不是吗?【参考方案3】:

Python 3.8开头,importlib.metadata可以替代pkg_resources提取通过pip等工具安装的第三方包的版本:

from importlib.metadata import version
version('wheel')
# '0.33.4'

【讨论】:

【参考方案4】:

我认为这取决于模块。例如,Django 有一个 VERSION 变量,你可以从 django.VERSION 获取,sqlalchemy 有一个 __version__ 变量,你可以从 sqlalchemy.__version__ 获取。

【讨论】:

django 也有django.get_version(),它返回一个字符串而不是一个元组。如有疑问,dir(module). 或者你可以使用inspect module中的getmembers函数。 以上也适用于模拟。 .get_distribution("xxx").version() 没有运气【参考方案5】:

某些模块(例如 azure)不提供 __version__ 字符串。

如果软件包是使用 pip 安装的,那么以下应该可以工作。

# say we want to look for the version of the "azure" module
import pip
for m in pip.get_installed_distributions():
    if m.project_name == 'azure':
        print(m.version)

【讨论】:

我收到了AttributeError: module 'pip' has no attribute 'get_installed_distributions'。使用 pip 版本 18.1 在 Jupyter 5.0.0 和 VS Code 1.30.2 中的结果相同。有什么建议吗? 对不起:看起来他们改变了 pip 的内部 API。无论如何,这不是受支持的用途。 github.com/pypa/pip/issues/5154【参考方案6】:
 import sys
 import matplotlib as plt
 import pandas as pd
 import sklearn as skl
 import seaborn as sns

 print(sys.version)
 print(plt.__version__)
 print(pd.__version__)
 print(skl.__version__)
 print(sns.__version__)

上面的代码显示了各个模块的版本: 样品 O/P:

3.7.1rc1(v3.7.1rc1:2064bcf6ce,2018 年 9 月 26 日,14:21:39)[MSC v.1914 32 位(英特尔)] 3.1.0 0.24.2 0.21.2 0.9.0 (sys显示python的版本)

【讨论】:

以上是关于如何通过代码获取 python 模块的版本号? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

LooseVersion()使用及.__version__版本号的获取

如何通过 DFC 代码获取当前版本标签号?

如何在Java中获取Tomcat版本号[重复]

如何获取手机的android版本号

请教可以查看python解释器版本号或者安装路径命令

如何查看python的当前版本号