打印模块的版本而不导入整个包

Posted

技术标签:

【中文标题】打印模块的版本而不导入整个包【英文标题】:Print version of a module without importing the entire package 【发布时间】:2018-01-13 19:01:46 【问题描述】:

如果只导入一个模块,是否可以检查包的版本?

当一个包被导入时...

import pandas as pd

我用:

print('pandas : version '.format(pd.__version__))

打印版本号。

如果只导入一个模块,我如何检查版本号,例如

import matplotlib.pyplot as plt

from sklearn.metrics import confusion_matrix

有什么建议吗?

【问题讨论】:

【参考方案1】:

我通常这样做:

import matplotlib.pyplot as plt
import sys

print (sys.modules[plt.__package__].__version__)

如果你只导入一个函数:

from sklearn.metrics import confusion_matrix as function
import sys

try:module_name = function.__module__[:function.__module__.index(".")]
except:module_name = function.__module__

print (sys.modules[module_name].__version__)

如果这不起作用,您可以导入 pip 并 for 循环所有模块。

【讨论】:

谢谢!以及当我使用“from sklearn.metrics import chaos_matrix”时如何检查sklearn的版本号。 请注意,这个答案相当于直接导入***包:简单的import matplotlib; print(matplotlib.__version__)在语义上是等价的,同时更具可读性。我看到这篇文章回答了如何在仅导入子包时派生包版本。但是标题中的问题表明可以以某种方式避免额外的开销,但事实并非如此。 (我怀疑我的推理,比较dir(sys.module["matplotlib"])import matplotlib; dir(matplotlib),它们是相同的)

以上是关于打印模块的版本而不导入整个包的主要内容,如果未能解决你的问题,请参考以下文章

“npm update”正在安装模块的 beta 版本,而不是在“npm install”之后安装的稳定版本

node本地项目发生依赖包因更新而不兼容导致项目启动错误解决记录

IDEA2.8版本pom的依赖怎么导入呀

python导入包错误

壹拾柒

如何在Android studio导入jdk9及以上版本中依赖包,如'rt.jar',' dt.jar'等