Elixir 脚本或 iex 是否可以在不创建新项目的情况下使用外部模块?

Can Elixir script or iex use external modules without creating a new project?

我经常在 Elixir 中使用 HTTPoison 编写 HTTP 程序。 当然,如果我使用 mix 创建新项目并修改 mix.exs 对 HTTPoison 的依赖, mix deps.get 可以解决依赖关系。

但是,有时我想尝试使用短脚本 (.exs) 或 iex 进行简单实验,这些实验需要外部模块而无需创建新项目。

有没有像 Elixir 中的 'libraries search path' 那样解决这个需求的方法?

Code 模块具有实现您需要的所有功能的功能。但是,它只适用于机器上的现有文件,您几乎需要做所有事情 "manually"。

Code.append_path

Code.ensure_loaded

应该可以完成您想要的大部分内容。

另一种方法是在现有项目中使用 iex -S mix 依赖项,然后加载 .exs 文件。

erun 可能会有帮助。 它将 Mix 依赖项包装在 escript 中,您可以 运行 您的脚本作为

$ erun foo.exs

https://github.com/s417-lama/erun