回答編集履歴

5

軽微な修正

2018/02/25 12:01

投稿

tatsuya6502
tatsuya6502

スコア2055

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のところ)

2018/02/25 12:01

投稿

tatsuya6502
tatsuya6502

スコア2055

answer CHANGED
@@ -24,7 +24,7 @@
24
24
  ```
25
25
 
26
26
 
27
- **2018/2/25 追記**
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 の記事の編集リクエストの内容を追記しました

2018/02/25 11:57

投稿

tatsuya6502
tatsuya6502

スコア2055

answer CHANGED
@@ -84,6 +84,8 @@
84
84
  root@df4a64a9ce1d:/code/google ドライブ/pyex#
85
85
  ```
86
86
 
87
- あと、いままでのエラーとは関係ないのですが、Qiita の記事の③ElixirからPythonを呼び出すの部分でファイル名などの間違いを見つけたので、記事に対する編集リクエストを提出しました。以下 URL で左に赤線が表示されている内容は緑線の内容に変更する必要がありますので注意してください。
87
+ あと、いままでのエラーとは関係ないのですが、Qiita の記事の③ElixirからPythonを呼び出すの部分でファイル名などの間違いを見つけたので、記事に対する編集リクエストを提出しました。[こちら編集リクエスト](https://qiita.com/piacere/items/c1af7b6ce472db83cff6/patches/44331?type=html)で左に赤線が表示されている内容は緑線の内容に変更する必要がありますので注意してください。
88
88
 
89
+ **修正内容**
89
- - https://qiita.com/piacere/items/c1af7b6ce472db83cff6/patches/44331?type=html
90
+ - ファイル名 lib/sample.py → lib/py_sample.py
91
+ - Elixir コード中の `:python.stop` → `:python.stop( py_exec )`

2

わかりやすさのために文章を少し修正しました

2018/02/25 04:54

投稿

tatsuya6502
tatsuya6502

スコア2055

answer CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  このエラーは erlport パッケージを rebar3 というツールでビルドしようとしたが、失敗したという内容です。どういう理由で失敗したか表示されてないので困りますね。
36
36
 
37
- こちらで試してみたところ、Elixir のプロジェクトを日本語のディレクトリ配下に置くと同じエラーが起こりました。試しに pyex ディレクトリを、別の、パスに日本語が含まれていない場所に移動して、再度、`iex -S mix` を実行してください。
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を呼び出すの部分でファイル名などの間違いを見つけたので、Qiita の記事編集リクエストを提出しました。以下の URL で左に赤線が表示されている内容は緑線の内容に変更する必要がありますので注意してください。
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)について追記しました

2018/02/25 04:47

投稿

tatsuya6502
tatsuya6502

スコア2055

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