我正在Julia中创建一个包,并且已经关注了文档的Package Development部分。
我的一个函数打开并读入我存储在包目录中的数据文件(mydata.txt
)。
当我从包目录运行Julia时,一切都很好,但是当我运行测试或从不同的目录运行Julia时不是很好,因为它不知道在哪里找到该数据文件。
我以为我可以这样做:
datapath = Pkg.dir("MyPkg") * "/data/"
获取文件的绝对路径,但它似乎仍无效。
为包中的数据提供绝对文件路径的正确方法是什么?
答案 0 :(得分:5)
为了正确处理多平台目录文件和路径,请使用Julia的内置joinpath
方法:
joinpath(Pkg.dir("MyPkg"), "data", "mydata.txt")
生成的路径在每个平台都有效。
答案 1 :(得分:1)
从Julia 1.0开始,Imano Luengo的回答将产生警告:
警告:
Pkg.dir(pkgname, paths...)
已过时;而是import PackageName; joinpath(dirname(pathof(PackageName)), "..", paths...)
“
因此,尽管它仍然可以工作,但它将在以后的版本中停止工作。消息中建议的替换,
joinpath(dirname(pathof(MyPkg)), "..", "data")
(无需导入,因为我们位于包装内)似乎可以正常工作。