我来自R背景,在那里很容易弄清楚我正在使用的所有加载包。 我可以查看我的 rstudio 选项卡"包",并在包名称和版本旁边看到我已加载/可用的选项旁边的复选标记。
我可以跑:
library(dplyr)
x=3;
y=4;
然后运行以找出我加载的软件包('dplyr):sessionInfo()
如果我不想查看加载的变量 pain (x, y),找出我环境中的哪些变量
ls()
我正在尝试找出一种在 python 中执行此操作的方法。 例如,是否有一个命令将:
- 向我展示我可以导入的所有可用的python包和相应的版本?
- 向我显示到目前为止我已经在会话中加载的包及其相应的版本?
- 向我展示我所做的所有已定义变量及其类型(例如熊猫数据框、列表、字典、函数等)
我相信这很容易,但我似乎找不到如何从非常简单的 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)
.