回答編集履歴
5
軽微な修正
    
        answer	
    CHANGED
    
    | @@ -108,7 +108,7 @@ | |
| 108 108 | 
             
            ここに Python インタープリタへの path が表示される(例: `/Users/tmsmac/anaconda/envs/myenv/bin/python`)
         | 
| 109 109 | 
             
            ```
         | 
| 110 110 |  | 
| 111 | 
            -
            pyex.ex の `:python.start( [ python_path: 'lib' ] )` に以下のように `python: ...` オプションを追加する。
         | 
| 111 | 
            +
            Python への path がわかったら、pyex.ex の `:python.start( [ python_path: 'lib' ] )` に以下のように `python: ...` オプションを追加する。
         | 
| 112 112 |  | 
| 113 113 | 
             
            ```elixir
         | 
| 114 114 | 
             
              def predict() do
         | 
4
kerasのエラーについて回答に追記しました(追記2のところ)
    
        answer	
    CHANGED
    
    | @@ -24,7 +24,7 @@ | |
| 24 24 | 
             
            ```
         | 
| 25 25 |  | 
| 26 26 |  | 
| 27 | 
            -
            ** | 
| 27 | 
            +
            **追記1**
         | 
| 28 28 |  | 
| 29 29 | 
             
            > pyex.exを作ったディレクトリではなくその上のlibやmix.exsがあるディレクトリで実行するべきだったという事ですね?
         | 
| 30 30 |  | 
| @@ -88,4 +88,32 @@ | |
| 88 88 |  | 
| 89 89 | 
             
            **修正内容**
         | 
| 90 90 | 
             
            - ファイル名 lib/sample.py → lib/py_sample.py
         | 
| 91 | 
            -
            - Elixir コード中の `:python.stop` → `:python.stop( py_exec )`
         | 
| 91 | 
            +
            - Elixir コード中の `:python.stop` → `:python.stop( py_exec )`
         | 
| 92 | 
            +
             | 
| 93 | 
            +
            **追記2**
         | 
| 94 | 
            +
             | 
| 95 | 
            +
            > :python, :"exceptions.ImportError", 'No module named keras.models', [{"/Users/tmsmac/pyex/lib/py_predict_sin.py"
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            これは Python 側のエラーですね。内容は `python` が py_predict_sin.py を実行しようとしたところ、`keras.models`モジュールが見つからなかった。
         | 
| 98 | 
            +
             | 
| 99 | 
            +
            おそらくお使いのマシンに Python の環境がいくつかインストールされていて、pyex.ex で `:python.start( [ python_path: 'lib' ] )` を呼んだ時に使われる Python 環境が、keras単品で動かす時の Python 環境とは違うのだと思います。(keras 用でないので keras を見つけられない)
         | 
| 100 | 
            +
             | 
| 101 | 
            +
            keras単品で動かす前に実行するコマンドはありますか?(例:`activate 環境名`) もしあるなら、そのコマンドを実行してから、`iex -P mix` を実行してください。
         | 
| 102 | 
            +
             | 
| 103 | 
            +
            もしそれでも直らないようなら以下も試してください。 
         | 
| 104 | 
            +
             | 
| 105 | 
            +
            ```
         | 
| 106 | 
            +
            $ kerasを動かす前に実行するコマンド(例:`activate 環境名`)を実行
         | 
| 107 | 
            +
            $ which python
         | 
| 108 | 
            +
            ここに Python インタープリタへの path が表示される(例: `/Users/tmsmac/anaconda/envs/myenv/bin/python`)
         | 
| 109 | 
            +
            ```
         | 
| 110 | 
            +
             | 
| 111 | 
            +
            pyex.ex の `:python.start( [ python_path: 'lib' ] )` に以下のように `python: ...` オプションを追加する。
         | 
| 112 | 
            +
             | 
| 113 | 
            +
            ```elixir
         | 
| 114 | 
            +
              def predict() do
         | 
| 115 | 
            +
                { :ok, py_exec } = :python.start( [ python: '上で調べたPythonインタープリタへのpath',
         | 
| 116 | 
            +
            	                                    python_path: 'lib' ] )
         | 
| 117 | 
            +
            ```
         | 
| 118 | 
            +
             | 
| 119 | 
            +
            iex で `recompile` してから `Pyex.predict()` を再度実行する。
         | 
3
Qiita の記事の編集リクエストの内容を追記しました
    
        answer	
    CHANGED
    
    | @@ -84,6 +84,8 @@ | |
| 84 84 | 
             
            root@df4a64a9ce1d:/code/google ドライブ/pyex# 
         | 
| 85 85 | 
             
            ```
         | 
| 86 86 |  | 
| 87 | 
            -
            あと、いままでのエラーとは関係ないのですが、Qiita の記事の③ElixirからPythonを呼び出すの部分でファイル名などの間違いを見つけたので、記事に対する編集リクエストを提出しました。 | 
| 87 | 
            +
            あと、いままでのエラーとは関係ないのですが、Qiita の記事の③ElixirからPythonを呼び出すの部分でファイル名などの間違いを見つけたので、記事に対する編集リクエストを提出しました。[こちらの編集リクエスト](https://qiita.com/piacere/items/c1af7b6ce472db83cff6/patches/44331?type=html)で左に赤線が表示されている内容は緑線の内容に変更する必要がありますので注意してください。
         | 
| 88 88 |  | 
| 89 | 
            +
            **修正内容**
         | 
| 89 | 
            -
            -  | 
| 90 | 
            +
            - ファイル名 lib/sample.py → lib/py_sample.py
         | 
| 91 | 
            +
            - Elixir コード中の `:python.stop` → `:python.stop( py_exec )`
         | 
2
わかりやすさのために文章を少し修正しました
    
        answer	
    CHANGED
    
    | @@ -34,7 +34,7 @@ | |
| 34 34 |  | 
| 35 35 | 
             
            このエラーは erlport パッケージを rebar3 というツールでビルドしようとしたが、失敗したという内容です。どういう理由で失敗したか表示されてないので困りますね。
         | 
| 36 36 |  | 
| 37 | 
            -
            こちらで試し | 
| 37 | 
            +
            こちらで試したところ、Elixir のプロジェクトを日本語のディレクトリ配下に置くと同じエラーが起こりました。試しに pyex ディレクトリを、別の、パスに日本語が含まれていない場所に移動して、再度、`iex -S mix` を実行してください。
         | 
| 38 38 |  | 
| 39 39 | 
             
            ```
         | 
| 40 40 | 
             
            $ docker run -it --rm -v $HOME/code:/code elixir bash
         | 
| @@ -84,6 +84,6 @@ | |
| 84 84 | 
             
            root@df4a64a9ce1d:/code/google ドライブ/pyex# 
         | 
| 85 85 | 
             
            ```
         | 
| 86 86 |  | 
| 87 | 
            -
            あと、いままでのエラーとは関係ないのですが、③ElixirからPythonを呼び出すの部分でファイル名などの間違いを見つけたので、 | 
| 87 | 
            +
            あと、いままでのエラーとは関係ないのですが、Qiita の記事の③ElixirからPythonを呼び出すの部分でファイル名などの間違いを見つけたので、記事に対する編集リクエストを提出しました。以下の URL で左に赤線が表示されている内容は緑線の内容に変更する必要がありますので注意してください。
         | 
| 88 88 |  | 
| 89 89 | 
             
            - https://qiita.com/piacere/items/c1af7b6ce472db83cff6/patches/44331?type=html
         | 
1
コンパイルエラー(Could not compile dependency :erlport)について追記しました
    
        answer	
    CHANGED
    
    | @@ -21,4 +21,69 @@ | |
| 21 21 | 
             
            # pip install erlport
         | 
| 22 22 |  | 
| 23 23 | 
             
            (あとは、③ElixirからPythonを呼び出すに書かれているコマンドを実行する)
         | 
| 24 | 
            -
            ```
         | 
| 24 | 
            +
            ```
         | 
| 25 | 
            +
             | 
| 26 | 
            +
             | 
| 27 | 
            +
            **2018/2/25 追記**
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            > pyex.exを作ったディレクトリではなくその上のlibやmix.exsがあるディレクトリで実行するべきだったという事ですね?
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            はい。そうです。
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            > ** (Mix) Could not compile dependency :erlport, "/Users/tmsmac/.mix/rebar3 bare compile --paths "/Users/tmsmac/Google ドライブ/Elixir/pyex/_build/dev/lib/*/ebin"" command failed.
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            このエラーは erlport パッケージを rebar3 というツールでビルドしようとしたが、失敗したという内容です。どういう理由で失敗したか表示されてないので困りますね。
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            こちらで試してみたところ、Elixir のプロジェクトを日本語のディレクトリ配下に置くと同じエラーが起こりました。試しに pyex ディレクトリを、別の、パスに日本語が含まれていない場所に移動して、再度、`iex -S mix` を実行してください。
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            ```
         | 
| 40 | 
            +
            $ docker run -it --rm -v $HOME/code:/code elixir bash
         | 
| 41 | 
            +
            root@df4a64a9ce1d:/# apt update
         | 
| 42 | 
            +
            root@df4a64a9ce1d:/# apt install python python-pip
         | 
| 43 | 
            +
            root@df4a64a9ce1d:/# pip install erlport
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            root@df4a64a9ce1d:/# cd /code/pyex
         | 
| 46 | 
            +
            root@df4a64a9ce1d:/code/pyex# mix deps.clean --all
         | 
| 47 | 
            +
            * Cleaning erlport
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            root@df4a64a9ce1d:/code/pyex# cd /code
         | 
| 50 | 
            +
            root@df4a64a9ce1d:/code# mkdir 'google drive'
         | 
| 51 | 
            +
            root@df4a64a9ce1d:/code# mkdir 'google ドライブ'
         | 
| 52 | 
            +
            root@df4a64a9ce1d:/code# cp -rp pyex google\ drive/
         | 
| 53 | 
            +
            root@df4a64a9ce1d:/code# cp -rp pyex google\ ドライブ/
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            root@df4a64a9ce1d:/code# cd google\ drive/pyex/
         | 
| 56 | 
            +
            root@df4a64a9ce1d:/code/google drive/pyex# mix deps.get
         | 
| 57 | 
            +
            Resolving Hex dependencies...
         | 
| 58 | 
            +
            Dependency resolution completed:
         | 
| 59 | 
            +
              erlport 0.9.8
         | 
| 60 | 
            +
            * Getting erlport (Hex package)
         | 
| 61 | 
            +
            root@df4a64a9ce1d:/code/google drive/pyex# iex -S mix
         | 
| 62 | 
            +
            Erlang/OTP 20 [erts-9.2.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            ===> Compiling erlport
         | 
| 65 | 
            +
            Compiling 1 file (.ex)
         | 
| 66 | 
            +
            Generated pyex app
         | 
| 67 | 
            +
            Interactive Elixir (1.6.1) - press Ctrl+C to exit (type h() ENTER for help)
         | 
| 68 | 
            +
            iex(1)> ^g
         | 
| 69 | 
            +
            User switch command
         | 
| 70 | 
            +
             --> q
         | 
| 71 | 
            +
             
         | 
| 72 | 
            +
            root@df4a64a9ce1d:/code/google drive/pyex# cd ../../google\ ドライブ/pyex/
         | 
| 73 | 
            +
            root@df4a64a9ce1d:/code/google ドライブ/pyex# mix deps.get
         | 
| 74 | 
            +
            Resolving Hex dependencies...
         | 
| 75 | 
            +
            Dependency resolution completed:
         | 
| 76 | 
            +
              erlport 0.9.8
         | 
| 77 | 
            +
            * Getting erlport (Hex package)
         | 
| 78 | 
            +
            root@df4a64a9ce1d:/code/google ドライブ/pyex# iex -S mix
         | 
| 79 | 
            +
            Erlang/OTP 20 [erts-9.2.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false]
         | 
| 80 | 
            +
             | 
| 81 | 
            +
            ===> Uncaught error in rebar_core. Run with DEBUG=1 to see stacktrace or consult rebar3.crashdump
         | 
| 82 | 
            +
            ===> When submitting a bug report, please include the output of `rebar3 report "your command"`
         | 
| 83 | 
            +
            ** (Mix) Could not compile dependency :erlport, "/root/.mix/rebar3 bare compile --paths "/code/google ドライブ/pyex/_build/dev/lib/*/ebin"" command failed. You can recompile this dependency with "mix deps.compile erlport", update it with "mix deps.update erlport" or clean it with "mix deps.clean erlport"
         | 
| 84 | 
            +
            root@df4a64a9ce1d:/code/google ドライブ/pyex# 
         | 
| 85 | 
            +
            ```
         | 
| 86 | 
            +
             | 
| 87 | 
            +
            あと、いままでのエラーとは関係ないのですが、③ElixirからPythonを呼び出すの部分でファイル名などの間違いを見つけたので、Qiita の記事の編集リクエストを提出しました。以下の URL で左に赤線が表示されている内容は緑線の内容に変更する必要がありますので注意してください。
         | 
| 88 | 
            +
             | 
| 89 | 
            +
            - https://qiita.com/piacere/items/c1af7b6ce472db83cff6/patches/44331?type=html
         | 
