打印模块的版本而不导入整个包
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”之后安装的稳定版本