使用 Elixir,erlport with Python 2.7.9,收到一个 arity 错误
Using Elixir, erlport with Python 2.7.9, receiving an arity error
我正在尝试将 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__"), [])
我正在尝试将 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__"), [])