Julia包数据文件和绝对/相对路径

Ell*_*ner 2 julia

我正在Julia中创建一个包,并且已经关注了Docs 的Package Development部分.

我的一个函数打开并读入mydata.txt我存储在包目录中的数据文件().

当我从包目录运行Julia时,一切都运行得很好,但是当我运行测试或从不同的目录运行Julia时不是很好,因为它不知道在哪里找到该数据文件.

我以为我可以这样做:

datapath = Pkg.dir("MyPkg") * "/data/"
Run Code Online (Sandbox Code Playgroud)

获取文件的绝对路径,但它似乎仍然无法正常工作.

为包中的数据提供绝对文件路径的正确方法是什么?

Dro*_*nir 6

从 Julia 1.0 开始,Imanol Luengo 的回答将产生警告:

警告:Pkg.dir(pkgname, paths...)已弃用;相反,做import PackageName; joinpath(dirname(pathof(PackageName)), "..", paths...)

因此,虽然它仍然有效,但它将在未来版本中停止工作。警告消息中建议的替换似乎有效:

joinpath(dirname(pathof(MyPkg)), "..", "data")
Run Code Online (Sandbox Code Playgroud)

在包内您不需要导入。


Ima*_*ngo 5

为了正确处理多平台目录文件和路径,请使用Julia的内置joinpath方法:

joinpath(Pkg.dir("MyPkg"), "data", "mydata.txt")
Run Code Online (Sandbox Code Playgroud)

生成的路径在每个平台都有效.