【发布时间】:2012-02-16 14:23:19
【问题描述】:
我无法将数据文件打包到 cabal dist 中。 getDataFileName生成的目录在安装包后不存在。
Main.hs:
module Main (
main
) where
import Paths_mypackage
main = do file <- getDataFileName "mydata.txt"
putStrLn file
print =<< readFile file
mypackage.cabal(由 Leksah 在浏览文件后生成):
data-files: /Users/peter/Documents/haskell/mypackage/data/mydata.txt
mydata-dir: ""
输出:
mypackage: /Users/peter/.cabal/share/mypackage-0.0.1/mydata.txt: openFile: does not exist (No such file or directory)
/Users/peter/.cabal/share/mypackage-0.0.1/mydata.txt
【问题讨论】:
-
在 .cabal 文件中,不要使用绝对路径。所有数据文件都应该在包目录下,并由相对路径引用。
-
啊,我应该提到,cabal 文件是由 Leksah 生成的。我会将它添加到帖子中(我会尝试手动编辑它以查看它是否可以这样工作)。
-
不,这没有帮助。目录
~/.cabal/share/mypackage-0.0.1/仍然不存在。 -
好的,知道了!我必须使用相对于 cabal 文件的路径,并使用完整的相对路径来访问它(这应该很明显)。
标签: haskell file-io cabal leksah