长生不老药中未定义功能(混合测试)
function is undefined in elixir (mix test)
我正在尝试在 Xubuntu 16.04 上安装 IElixir Jupyter notebook 内核。我之前在另一台使用 Xubuntu 16.04 的机器上成功完成了它。
我有最新的 erlang otp 19.3 和 elixir 1.4.4(使用 kiex 安装)。
执行 mix test
后,我得到一个关于未定义 :erlzmq_nif.context/1
函数的错误:
** (Mix) Could not start application ielixir: exited in: IElixir.start(:normal, [])
** (EXIT) an exception was raised:
** (UndefinedFunctionError) function :erlzmq_nif.context/1 is undefined (module :erlzmq_nif is not available)
:erlzmq_nif.context(1)
(ielixir) lib/ielixir.ex:13: IElixir.start/2
(kernel) application_master.erl:273: :application_master.start_it_old/4
问题是所有依赖项都已成功安装,我可以在 iex
:
中使用 :erlzmq_nif.context/1
iex(1)> :erlzmq_nif.context 1
{:ok, ""}
iex(2)>
我已经将 erlzmq
的构建复制到 /usr/lib/erlang/lib
以便我也可以在 erlang 中使用它:
1> erlzmq_nif:context(3).
{ok,<<>>}
2>
为什么在使用 mix 时这个库对 elixir 不可见?
我还没有解决问题,但我已经设法让 IElixir 工作了。
我所做的是将 mix.exs
中的 :erlzmq
依赖项替换为 github: "zeromq/erlzmq"
(注意回购名称中没有 2
),这可能不会优于 [=14] =] 因为它不是基于 NIF,但至少它可以正常工作。
我正在尝试在 Xubuntu 16.04 上安装 IElixir Jupyter notebook 内核。我之前在另一台使用 Xubuntu 16.04 的机器上成功完成了它。
我有最新的 erlang otp 19.3 和 elixir 1.4.4(使用 kiex 安装)。
执行 mix test
后,我得到一个关于未定义 :erlzmq_nif.context/1
函数的错误:
** (Mix) Could not start application ielixir: exited in: IElixir.start(:normal, [])
** (EXIT) an exception was raised:
** (UndefinedFunctionError) function :erlzmq_nif.context/1 is undefined (module :erlzmq_nif is not available)
:erlzmq_nif.context(1)
(ielixir) lib/ielixir.ex:13: IElixir.start/2
(kernel) application_master.erl:273: :application_master.start_it_old/4
问题是所有依赖项都已成功安装,我可以在 iex
:
:erlzmq_nif.context/1
iex(1)> :erlzmq_nif.context 1
{:ok, ""}
iex(2)>
我已经将 erlzmq
的构建复制到 /usr/lib/erlang/lib
以便我也可以在 erlang 中使用它:
1> erlzmq_nif:context(3).
{ok,<<>>}
2>
为什么在使用 mix 时这个库对 elixir 不可见?
我还没有解决问题,但我已经设法让 IElixir 工作了。
我所做的是将 mix.exs
中的 :erlzmq
依赖项替换为 github: "zeromq/erlzmq"
(注意回购名称中没有 2
),这可能不会优于 [=14] =] 因为它不是基于 NIF,但至少它可以正常工作。