我有一个包,其结构如下(好吧,这大大简化了一下,但是……)
app/
src/
Main.hs
data/
data.txt
app.cabal
Paths_app.hs
Setup.hs
在 Paths_app.hs 中,我有:
module Paths_app where
getDataFileName :: FilePath -> IO FilePath
getDataFileName = return
而在 Main.hs 中我有:
module Main where
import Paths_app
main = do
file <- getDataFileName "data/data.txt"
data <- readFile file
putStrLn $ "Your data is: " ++ data
我的app.cabal文件的相关部分如下:
name: app
version: 1.0
build-type: Simple
data-files: data/data.txt
executable foo
build-depends: base, haskell98
main-is: Main.hs
hs-source-dirs: src
这可以成功构建(使用cabal configure
后跟cabal install
),但可执行文件报错找不到 data.txt 文件。我已尝试替换该行 。file <- getDataFileName "data/data.txt"
使用
file <- getDataFileName "data.txt"
但是同样的问题仍然存在。我是否有明显的错误?
Other-modules
字段中提到了Paths_app
吗? - hammarPaths_<packagename>
:Found directory: C:\Users\ctaylor\AppData\Roaming\cabal\haskeme-0.1\lib\stdlib.scm
,尽管它仍然无法加载文件。我需要进一步调查。感谢您的帮助! - Chris TaylorgetDataFileName
返回的文件名将数据加载到程序中时,我没有对反斜杠进行转义。感谢大家的帮助!我不确定是否应该将此作为答案(因为它实际上并不是问题的答案),还是只需删除该问题。 - Chris Taylor