-
Elixir에서 Python 이용하기컴퓨터/파이썬 2020. 11. 21. 16:38728x90반응형
Elixir
1. 사전 준비
Elixir 설치 @링크
새 프로젝트 만들기 (콘솔)
mix new project_name
mix.exs에 Export 라이브러리 추가
Export 라이브러리 @링크: 이 라이브러리는 Elixir에서 Ruby와 Python을 쉽게 사용할 수 있게 해줌.
defmodule Pyelixir.MixProject do use Mix.Project def project do [ app: :pyelixir, version: "0.1.0", elixir: "~> 1.11", start_permanent: Mix.env() == :prod, deps: deps() ] end def application do [ extra_applications: [:logger] ] end # 아래에 export 추가하기 defp deps do [ {:export, "~> 0.1.0"} ] end end
Export 예제
defmodule SomePythonCall do use Export.Python def call_python_method do # path to our python files {:ok, py} = Python.start(python_path: Path.expand("lib/python")) # call "upcase" method from "test" file with "hello" argument py |> Python.call("test", "upcase", ["hello"]) # same as above but prettier val = py |> Python.call(upcase("hello"), from_file: "test") # close the Python process py |> Python.close() val end end
설치 (콘솔)
mix deps.get
예제 프로젝트 폴더/파일은 아래와 같이 생겼다.
└── pyelixir ├── lib │ ├── pyelixir │ │ └── test.ex │ ├── python │ │ └── test.py │ └── pyelixir.ex ├── mix.exs └── …
2. 파이썬 불러오기
test.py
아래 test.py는 노드를 만들고 노드의 값을 출력하는 프로그램이다.class Node: def __init__(self, val): self.val = val def create(): for i in range(1, 10): n = Node(i) print("Hi, {}".format(n.val))
pyelixir.ex
defmodule Pyelixir do use Export.Python # 파이썬 caller @python_dir "lib/python" # 파이썬 파일 위치 경로 def python_call(file, function, args \\ []) do {:ok, py} = Python.start(python_path: Path.expand(@python_dir)) Python.call(py, file, function, args) end end
pyelixir/test.ex
defmodule Pyelixir.Test do import Pyelixir, only: [python_call: 2] @python_module "test" def create do python_call(@python_module, "create") # create 함수 불러오기 end end
3. 실행
아래 명령어로 컴파일 후,
iex -S mix
Pyelixir.Test.create() 함수를 직접 불러오면, 아래와 같이 나온다.
참고
pycall 함수 @Github Gist
Export 라이브러리 @Github
728x90'컴퓨터 > 파이썬' 카테고리의 다른 글
Python: luigi 배치 job 파이프라인 생성기 (0) 2020.11.21 Python: LRU 캐시 만들어보기 (0) 2020.11.16 Python: 행렬 곱셈 알고리즘 소개 (0) 2020.11.15