我来自R背景,很容易为我找出我正在使用的所有已加载软件包。我可以查看我的rstudio选项卡的“程序包”,并在程序包名称和版本旁边看到对勾标记,以显示我已加载/可用的内容。
我可以跑步:
library(dplyr)
x=3;
y=4;
然后运行以找出我已加载的软件包('dplyr):
sessionInfo()
如果不想查看加载的变量痛苦(x,y),就可以找出环境中存在哪些变量
ls()
我正在尝试找出一种在python中执行此操作的方法。例如,是否有一条命令会:
我敢肯定这很简单,但是我似乎找不到从R来的简单方法。
答案 0 :(得分:1)
告诉我一切我可以导入的python包和对应的版本?
help('modules')
注意:您也可以在命令行上输入pip freeze
,以查看使用pip
安装了哪些第三方模块。 (如果您有多个Python版本,并希望确保列出与python -m pip freeze
相同版本的软件包,请使用python
。)但是,此列表并不完整,因为它不包含内置的模块和您自己的模块。
告诉我到目前为止我在会话中已经加载的软件包及其对应的版本?
我认为这不可能,但请参见下一个问题:
告诉我我已经定义的所有变量及其类型(例如熊猫数据框,列表,字典,函数等)
globals()
这还包括所有已加载的模块。您可以根据需要过滤掉“模块”。
答案 1 :(得分:1)
1。通常不可能。导入语句在执行该行时会动态处理,因此结果取决于当时文件系统上的内容。
通过查看site-packages dir,您可以对可用的内容有一个不错的了解,该目录的位置取决于平台,但可以在下面的代码段中找到:
>>> import sysconfig
>>> sysconfig.get_paths()['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)
就可以看到对象的类型。
答案 2 :(得分:0)
您可以使用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%的时间内都是准确的。