How do I get a python module's version number through code?
我正在尝试获取我使用的几个特定模块的版本号。我可以存储在变量中的东西。
- 相关:运行时检查python模块版本
- 如何检查python模块版本的可能副本?
使用pkg_资源(安装工具的一部分)。从pypi安装的任何东西都至少有一个版本号。不需要额外的包/模块。
1 2 3
| >>> import pkg_resources
>>> pkg_resources.get_distribution("simplegist").version
'0.3.2' |
从Matt的广义回答中,做一个dir(YOURMODULE)并寻找__version__、VERSION或VERSION。大多数模块像__version__,但我认为numpy使用version.version。
- 只是要注意,根据PEP8的建议,__version__是新代码的首选标准。看到将版本嵌入到python包中的标准方法了吗?
- print(YOURMODULE.__version__)
我想这取决于模块。例如,django有一个版本变量,可以从django.VERSION中获得,sqlacalchemy有一个__version__变量,可以从sqlalchemy.__version__中获得。
- Django也有django.get_version(),它返回一个字符串而不是一个元组。当有疑问时,dir(module)。
- 也可以使用检查模块中的getmembers功能。
- 以上也适用于模拟。不走运。get_distribution("xxx").version()。
某些模块(如Azure)不提供__version__字符串。
如果包是与PIP一起安装的,那么下面的内容应该可以工作。
1 2 3 4 5
| # 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代码1.30.2的结果相同。有什么建议吗?