You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在IEx中获取所有Elixir模块及标准库模块列表?

在IEx中获取模块列表的方法

嘿,这两个问题其实都有很直接的解决办法,我来一步步给你讲清楚:

一、获取当前环境中所有已加载的Elixir模块列表

如果你想拿到当前IEx会话里已经加载的所有模块(包括标准库、你自己写的代码、第三方依赖的模块),可以用Erlang的:code.all_loaded()函数。它会返回一个元组列表,每个元组是{模块名, beam文件路径}的格式。

要只提取模块名的话,配合Enum.map处理一下就行:

Enum.map(:code.all_loaded(), fn {mod, _path} -> mod end)

运行之后你就能看到所有已加载模块的原子列表啦,比如Enum、Map、YourApp.MyModule这些都会在里面。

二、获取Elixir标准库的所有模块列表

如果只想拿到官方标准库的模块,有两种靠谱的方式:

方法1:通过应用规范直接获取

Elixir的标准库本身是一个名为:elixir的应用,我们可以直接从它的应用规范里拿到所有定义的模块:

Application.spec(:elixir, :modules)

这个方法最准确,因为它直接读取Elixir应用打包时声明的模块列表,不会包含第三方或自定义模块。

方法2:从标准库的beam文件路径提取

如果你想手动从文件系统层面找,也可以这么做:

  1. 先获取Elixir标准库的安装路径
  2. 遍历路径下的所有.beam文件(这些是编译后的模块文件)
  3. 从文件名转换为模块名

代码示例:

# 获取Elixir标准库的ebin目录路径
elixir_ebin_dir = Path.join(:code.lib_dir(:elixir), "ebin")
# 找到所有beam文件
beam_files = Path.wildcard(Path.join(elixir_ebin_dir, "*.beam"))
# 转换为模块名
Enum.map(beam_files, fn file ->
  file |> Path.basename(".beam") |> String.to_atom()
end)

这个方法适合你想确认文件系统里的标准库模块时用,结果和方法1基本一致。

内容的提问来源于stack exchange,提问作者Loading...

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:18:04