Elixir库应用程序脚本路径

Elixir库应用程序脚本路径,elixir,elixir-mix,Elixir,Elixir Mix,我有一个Python脚本,它是作为我正在编写的Elixir库的一部分运行的——也就是说,在启动应用程序时,我在一个start\u link函数中运行System.cmd(“Python”,[path/to/script]) 我将脚本安装在用户的deps/mylibrary/lib文件夹中 路径/to/script是我不知道怎么做的部分-我可以通过计算System.cwd()并查看结果来推断脚本的位置,但这似乎是错误的 我想一定有办法使用Mix来实现这一点。库/包在运行时需要的文件应该存储在pri

我有一个Python脚本,它是作为我正在编写的Elixir库的一部分运行的——也就是说,在启动应用程序时,我在一个start\u link函数中运行
System.cmd(“Python”,[path/to/script])

我将脚本安装在用户的deps/mylibrary/lib文件夹中

路径/to/script
是我不知道怎么做的部分-我可以通过计算
System.cwd()
并查看结果来推断脚本的位置,但这似乎是错误的


我想一定有办法使用Mix来实现这一点。

库/包在运行时需要的文件应该存储在
priv/
文件夹中。此目录中的所有内容都将出现在由例如Distillery创建的Erlang版本中。在运行时,您可以使用
:code.priv_dir/1
返回的路径来了解包的
priv
目录的位置

因此,如果您的Python脚本位于
priv/foo/bar.py
中,您可以使用以下命令获取该文件的绝对路径:

Path.join(:code.priv_dir(:my_package), "foo/bar.py")

其中
:my_package
是您的包的名称。

我通常使用
路径。使用
\uuuu DIR\uuu
展开
,以获取相对于当前源文件的路径,例如
路径。展开(“路径/到/脚本”,“uuuu DIR\uu”)
。你能看看这对你有用吗?(您可能需要执行
。/path/to/script
。/../path/to/script
操作,具体取决于您从哪个文件调用此操作。)@Dogbert是的,可以!但我也在想,这是否是一种规范的做法。似乎许多Elixir库必须具有非Elixir依赖项。这些文件通常像我所做的那样安装在deps/whatever/lib中吗?我认为您希望在运行时访问的文件应该放在
priv/
文件夹中,然后您可以确保您可以使用
:code.priv\u dir(:my\u package)
从代码中访问它们。看到了吗?还有我的评论。@Dogbert是的,这很有效。我想这可能就是解决问题的方法。如果你想写答案,我会接受的。谢谢