如何打印&x27;用户导入';python中的模块名称和版本

如何打印&x27;用户导入';python中的模块名称和版本,python,google-colaboratory,Python,Google Colaboratory,我想在colab中打印导入的模块名称和版本 这是我的密码 import numpy as np ....and so on.... ref_dict = {'pd': 'pandas', 'np': 'numpy', 'sns': 'seaborn', 'plt': 'matplotlib'} as_name =[x for x in set(sys.modules) & set(globals())] as_ref = [ref_dict[x] for x in dir() if x

我想在colab中打印导入的模块名称和版本
这是我的密码

import numpy as np
....and so on....

ref_dict = {'pd': 'pandas', 'np': 'numpy', 'sns': 'seaborn', 'plt': 'matplotlib'}
as_name =[x for x in set(sys.modules) & set(globals())]
as_ref = [ref_dict[x] for x in dir() if x in ref_dict.keys()]
module_list= as_name + as_ref
a, na=[], []

print('--module name & versions imported by user--\n')
for name in module_list:
    try: a.append('{}: {}'.format(name, sys.modules[name].__version__))
    except: na.append('{}: {}'.format(name, 'Not available'))

print(*a,'\n-----\n', *na, sep='\n')
这就是结果

--module name & versions imported by user--

torch: 1.8.0+cu101
re: 2.2.1
tqdm: 4.41.1
sklearn: 0.22.2.post1
numpy: 1.19.5
pandas: 1.1.5
matplotlib: 3.2.2
seaborn: 0.11.1

-----

os: Not available
sys: Not available
__main__: Not available
如上所述,ref_dict指定由alias导入的模块,我不想这样做。

是否有更好的方法查看导入的模块版本和名称?

这将为您提供所有导入模块的列表

{value.__name__ for value in globals().values() if inspect.ismodule(value)}
因此,它与您正在使用的类似,但不是在global()中使用别名,而是获取模块的实际名称

请注意,它要求您导入inspect,因此
inspect
内置项也属于该列表的一部分

In [1]: import inspect

In [2]: import pandas as pd

In [3]: {value.__name__ for value in globals().values() if inspect.ismodule(value)}
Out[3]: {'builtins', 'inspect', 'pandas'}

谢谢你的回答。无论如何,像“from tqdm.notebook import tqdm”这样的导入不会出现在这段代码中。不是很pythonic,但是module_list=set([x代表set(sys.modules)&set(globals())]+[value.\uu name\uuuuuuuu代表globals()中的值。values()如果inspect.ismodule(value)],这是打印包含tqdm的模块