質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Elixir

Elixirは、並列処理や関数型に特化した、Erlang VM (BEAM) 上で動作する汎用プログラミング言語です。分散システム、耐障害性、ソフトリアルタイムシステムなどの機能を持ちます。

Q&A

解決済

1回答

2105閲覧

ElixirからPythonのプログラムを呼び出す方法についてです。

Hayato1201

総合スコア220

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Elixir

Elixirは、並列処理や関数型に特化した、Erlang VM (BEAM) 上で動作する汎用プログラミング言語です。分散システム、耐障害性、ソフトリアルタイムシステムなどの機能を持ちます。

0グッド

0クリップ

投稿2018/02/27 03:54

編集2018/02/27 03:55

以下のでElixirからPythonのプログラムを呼び出す方法について質問してそれに関してはお陰様で解決いたしました。
https://teratail.com/questions/114967

しかし今回別のプログラムで、ElixirからPythonを呼び、そのPython側でファイルを読みむ作業をしたところその読み込みたいファイルが無いといったエラーが出ました。

pyexというディレクトリにmix.exsや、libというディレクトリがあります。そのlibの中にPythonを呼び出すためのpyex.exがありさらにpy_test.pyという今回Elixirから呼び出したいPythonプログラム、そしてpy_test.pyから呼び出す150trainig_sというテキストファイルがあります。pyex.exに関しては以下のようにしてあります。

Elixir

1defmodule Pyex do 2 def test() do 3 { :ok, py_exec } = :python.start( [ python: '/usr/local/bin/python3', python_path: 'lib' ] ) 4 :python.call( py_exec, :py_test, :test, [] ) 5 :python.stop( py_exec ) 6 end 7end 8

これをpyexからiex -S mixで呼び出し、iex(1)> Pyex.test() で実行すると、以下のようなエラーが出ます。

** (ErlangError) Erlang error: {:python, :"builtins.FileNotFoundError", '[Errno 2] No such file or directory: '150trainig_s'', {:"$erlport.opaque", :python, <<128, 2, 99, 116, 114, 97, 99, 101, 98, 97, 99, 107, 10, 83, 116, 97, 99, 107, 83, 117, 109, 109, 97, 114, 121, 10, 113, 0, 41, 129, 113, 1, 40, 99, 116, 114, 97, 99, 101, 98, 97, 99, 107, ...>>}}
(erlport) /Users/tmsmac/pyex/deps/erlport/src/erlport.erl:234: :erlport.call/3
(pyex) lib/pyex.ex:33: Pyex.test/0

No such file or directory: '150trainig_s\ということなので150trainig_sが無いということなんだと思いますが、150trainig_sはpy_test.pyと同じディレクトリ内にあります。またlibから直接Puthon3 py_test.pyで実行すると普通に動きます。Elixirから呼び出す際はまたさらに別のパスの設定などが必要なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まずはカレントディレクトリを確認した方が良いでしょうね。
Python内でこの記事に従って、カレントディレクトリを確認してみてください。
Pythonでディレクトリを確認し移動する

またlibから直接Puthon3 py_test.pyで実行すると普通に動きます。

ターミナルでlibまで移動してからコマンド打ち込んでるんですか?
その一個上のディレクトリに遡った状態でpython3 lib/py_test.pyを実行してみてください。
同じエラーが出ると思います。

スクリプトの実行ディレクトリを元にアクセスしたければ、この記事に従って処理を変更してみてください。
[Python] スクリプト実行ディレクトリを絶対パスで取得する

投稿2018/02/27 04:09

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問