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

10

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

当像这样导入包时...

import pandas as pd

我使用:

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

打印版本号。

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

import matplotlib.pyplot as plt

或者
from sklearn.metrics import confusion_matrix

有什么建议吗?

1个回答

10

我通常这样做:

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 confusion_matrix”时,如何检查sklearn的版本号? - René
请注意,此答案等同于直接导入顶级包:简单地import matplotlib; print(matplotlib.__version__)在语义上是等效的,同时更易读。我看到这篇文章回答了如何在仅导入子包时推导出包版本。但标题中的问题表明可以以某种方式避免额外的开销,这并不是事实。(如果您怀疑我的推理,请比较dir(sys.module["matplotlib"])import matplotlib; dir(matplotlib),它们是相同的) - normanius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接