获取所有加载的python包和版本以及变量的列表



我来自R背景,在那里很容易弄清楚我正在使用的所有加载包。 我可以查看我的 rstudio 选项卡"包",并在包名称和版本旁边看到我已加载/可用的选项旁边的复选标记。

我可以跑:

library(dplyr)
x=3;
y=4;

然后运行以找出我加载的软件包('dplyr):sessionInfo()如果我不想查看加载的变量 pain (x, y),找出我环境中的哪些变量

ls() 

我正在尝试找出一种在 python 中执行此操作的方法。 例如,是否有一个命令将:

  1. 向我展示我可以导入的所有可用的python包和相应的版本?
  2. 向我显示到目前为止我已经在会话中加载的包及其相应的版本?
  3. 向我展示我所做的所有已定义变量及其类型(例如熊猫数据框、列表、字典、函数等)

我相信这很容易,但我似乎找不到如何从非常简单的 R 中做到这一点。

向我展示我可以导入的所有可用的python包和相应的版本?

help('modules')

注意:您也可以在命令行上键入pip freeze以查看您使用pip安装了哪些第三方模块。(如果您有多个 Python 版本并希望确保列出与python版本相同的包,请使用python -m pip freeze。但是,此列表并不完整,因为它不包含内置模块和您自己的模块。

向我显示到目前为止我已经在会话中加载的包及其相应的版本?

我认为这是不可能的,但请参阅下一个问题:

向我展示我所做的所有已定义变量及其类型(例如熊猫数据框、列表、字典、函数等)

globals()

这还包括所有加载的模块。如果需要,您可以过滤掉"模块"。

您可以使用 sys.modules 获取当前加载的模块。这意味着您可以使用以下代码打印当前加载的模块及其版本:

import sys
for module in sys.modules.values():
if hasattr(module, "__version__"):
print(module.__name__, module.__version__)
else:
print(module.__name__)

模块没有义务提供__version__属性,因此您必须在使用之前检查它是否存在。标准库中的大多数模块不提供版本,尽管有趣的是,有些模块提供的版本与当前版本的 Python 不同。

需要注意的是,您可以使用 importlib 加载模块而无需将它们添加到 sys.modules,因此不能保证 sys.modules 在 100% 的时间内都是准确的。

对于 2,您可以使用 session_info 包(以前为 sinfo.sinfo()):

import session_info
session_info.show()

1.一般不可能。import 语句在执行该行时是动态处理的,因此结果取决于当时文件系统上的任何内容。

您可以通过查看站点包目录来了解可用的内容,其位置取决于平台,但可以通过下面的代码片段找到:

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/usr/local/lib/python3.7/site-packages'

标准库始终可用。stdlib 模块的完整列表位于库文档中:https://docs.python.org/3/library/

pkgutil.walk_packages()中有一个辅助函数,它本质上将遍历 sys 路径并查找可访问的模块。 我相信 pydoc 在另一个答案中列出的help("modules")实际上在内部使用了这个帮助程序。

pip freeze将显示虚拟环境中安装的发行版。

2.看看sys.modules.模块的版本号不是必需的,甚至可能不存在,但常见的约定是顶级模块具有__version__属性。

3.这是内置功能vars只需调用不带参数的vars(),它将返回名称和对象的映射。您只需要看到的对象类型type(obj).

最新更新