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

Julia包数据文件和绝对/相对路径,julia,Julia,我在Julia中创建了一个包,并遵循了文档的部分 我的一个函数打开并读取我存储在包目录中的数据文件(mydata.txt) 当我从包目录运行Julia时,一切都非常好,但当我运行测试或从其他目录运行Julia时,一切都不太好,因为它不知道在哪里可以找到该数据文件 我想我可以做一些事情,比如: datapath = Pkg.dir("MyPkg") * "/data/" 获取文件的绝对路径,但它似乎仍然不起作用 为数据包中的数据提供绝对文件路径的正确方法是什么?为了正确处理多平台目录文件和路径,

我在Julia中创建了一个包,并遵循了文档的部分

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

当我从包目录运行Julia时,一切都非常好,但当我运行测试或从其他目录运行Julia时,一切都不太好,因为它不知道在哪里可以找到该数据文件

我想我可以做一些事情,比如:

datapath = Pkg.dir("MyPkg") * "/data/"
获取文件的绝对路径,但它似乎仍然不起作用


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

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

joinpath(Pkg.dir("MyPkg"), "data", "mydata.txt")

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

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

警告:
Pkg.dir(pkgname,path…);相反,要导入PackageName;joinpath(目录名(pathf(PackageName)),“.”,路径…

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

joinpath(dirname(pathof(MyPkg)), "..", "data")

(没有进口,因为我们在包装内)似乎可以工作。

您使用的是什么操作系统,Julia的哪个版本,以及它是如何不起作用的?通常,在构建directory.Mac.Julia 0.4.5时,您应该使用joinpath而不是连接。基本上就是找不到该文件。感谢
joinpath
提示,我来试一试。
joinpath(Pkg.dir(“MyPkg”),“data”,“mydata.txt“”
应该行。@imaluengo我想你应该把你的评论作为答案发布。@niczky12 Thx!完成。忘了这个问题。不幸的是,在Julia 1.0中,我得到了“警告:
Pkg.dir(pkgname,paths…
已被弃用;相反,要导入PackageName;joinpath(dirname(pathf(PackageName)),”,“,,paths…”,所以这不会工作太久。仍在考虑修复,因为这在有问题的包中不起作用……令我稍感意外的是,上面的操作在包中起作用,没有导入,因此警告消息中的建议起作用。我将补充这一点作为答案。