私は、私が書いているエリクシールライブラリの一部として実行するPythonスクリプトを持っています。つまり、アプリケーションを起動すると、start_link関数の1つにSystem.cmd("python", [path/to/script], [])
が実行されます。スクリプトへのエリクシライブラリのアプリケーションパス
ユーザーのdeps/mylibrary/libフォルダにスクリプトをインストールします。
path/to/script
は、私が行う方法がわからない部分です。System.cwd()
を評価して結果を見て、スクリプトがどこにあるのか推測できますが、これは間違っているようです。
ミックスを使用してこれを行う方法が必要であると思います。
私は通常、現在のソースファイルに相対的なパスを得るために 'Path.expand'と' __DIR__'を使用します。 'Path.expand(" path/to/script "、__DIR __)'となります。これがあなたのために働くかどうか分かりますか? (あなたはこれを呼び出すファイルに応じて '../path/to/script'や' ../../ path/to/script'を実行する必要があるでしょう) – Dogbert
@Dogbertはい、そうです作品!しかし、これが標準的なやり方であるかどうかも疑問に思っていました。多くのElixirライブラリは、Elixir以外の依存関係を持っている必要があります。これらは通常deps/whatever/libにインストールされていますか? – MaxStrange
私は実行時にアクセスしたいファイルを 'priv /'フォルダに入れて、 ':code.priv_dir(:my_package)'を使ってコードからアクセスできることを確信できます。 http://stackoverflow.com/questions/43414104/read-files-in-phoenix-in-production-modeと私のコメントを参照してください。 – Dogbert