使用Elixir,使用Python 2.7.9进行erlport,收到arity错误



我正在尝试将Python与Elixir一起使用,我编写了以下功能代码(你可以在这里找到我正在构建的存储库:https://github.com/arthurcolle/elixir_with_erlport)

defmodule Snake do
  use Application
  def start(_type, _args) do
    import Supervisor.Spec, warn: false
    children = [
      # Define workers and child supervisors to be supervised
      # worker(Snake.Worker, [arg1, arg2, arg3]),
    ]
    opts = [strategy: :one_for_one, name: Snake.Supervisor]
    Supervisor.start_link(children, opts)
  end
  def py do
    {:ok, pp} = :python.start()
    :python.call(pp, :__builtin__, :print, ["hey there"])
  end
end

我可以运行iex -S mix run,然后输入 Snake.py,我将得到以下输出:

"hey there" :undefined

好的,太好了。

然后我尝试通过将上面的两行换成以下内容来打印出当前版本的 Python:

{:ok, pp} = :python.start() :python.call(pp, :sys, :version, [])

但是当我运行它时,它给了我这个 arity 错误

** (FunctionClauseError) no function clause matching in :erlport.call/5 src/erlport.erl:87: :erlport.call(#PID<0.108.0>, :sys, 'version.__str__', [], [])

这对我来说没有任何意义,因为我的调用只是一个 :erlport.call/4,末尾只有一个列表(而不是它所说的 2)。

{:ok, pp} = :python.start_link()
:python.call(pp, :sys, String.to_atom("version.__str__"), [])

相关内容

  • 没有找到相关文章

最新更新