james_p_d

james_p_d

Calling Elixir function from Python with pyrlang

Hello all,

I’ve recently been playing around with both Erlang and Elixir and wished to create a few apps for my Github with them, both of which required a small UI. For the Erlang project I managed to get a Java Swing program to call functions running on an Erlang server without any issues. For the Elixir project I’d like to use Python.

I came across ‘pyrlang’ and was able to run through a couple of examples of interacting with an Erlang server through Python, but I’m not finding much in the way of information regarding calling Elixir.

If anyone has any experience with pyrlang, can you tell me what I’d need to do to pass a couple of variables to an Elixir function, and retrieve the result?

# To start server: werl -name erl@127.0.0.1 -setcookie COOKIE -env ERL_LIBS "C:\Program Files (x86)\Elixir\lib" -user Elixir.IEx.CLI -extra --no-halt
# To compile: c("library.ex")
# To test: Lib.add_numbers(3, 4)

defmodule Lib do
    def add_numbers(a, b) do
        a + b
    end
end

Most Liked

samrose

samrose

In case anyone comes across this via searching for Pyrlang and Elixir examples:

The documentation, and code examples now cover elixir

There are 2 make commands for the python and elixir nodes Pyrlang/Makefile at master · Pyrlang/Pyrlang · GitHub

plus, there are Examples! — Pyrlang 1.0 documentation instructions and code
Pyrlang/examples/elixir at master · Pyrlang/Pyrlang · GitHub

Maxximiliann

Maxximiliann

Hello friend and welcome to the forum. :slight_smile:

Being in a similar boat, I’ve found the step-by-step articles below to be very helpful in devising a solution using ErlPort, an Elixir library:

  1. https://medium.com/hackernoon/mixing-python-with-elixir-7a2b7ac6696
  2. https://medium.com/hackernoon/mixing-python-with-elixir-ii-async-e8586f9b2d53
  3. https://medium.com/hackernoon/calling-python-from-elixir-erlport-vs-thrift-be75073b6536

Perhaps they can, at the very least, point you in the right direction? :slight_smile:

Where Next?

Popular in Questions Top

electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New

Other popular topics Top

minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New

We're in Beta

About us Mission Statement