2012-02-16 2 views
1

Я не могу получить файлы данных, которые должны быть упакованы в каббале. Каталог, созданный с помощью getDataFileName, не существует после установки пакета.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 
+1

В файле .cabal не использовать абсолютные пути. Все файлы данных должны находиться под каталогом пакетов и обозначаться относительными путями. –

+0

Ах, я должен был упомянуть, файл такси генерируется Лексахом. Я добавлю это к сообщению (и я попытаюсь отредактировать его вручную, чтобы проверить, работает ли он таким образом). –

+0

Нет, это не помогло. Каталог '~/.cabal/share/mypackage-0.0.1 /' все еще не существует. –

ответ

2

линии в. файл камеры должен быть

data-files: mydata.txt 
data-dir: data 

Затем cabal установит файл данных в соответствующем месте, /Users/peter/.cabal/share/mypackage-0.0.1/mydata.txt в вашем случае, и программа будет работать.

+0

Стоит отметить, что я не люблю распространять пустые файлы данных в качестве держателей мест, поэтому вместо этого я использую 'getDataDir' и [' createDirectoryIfMissing'] (http://hackage.haskell.org/packages/archive /directory/latest/doc/html/System-Directory.html#v:createDirectoryIfMissing) (. –

Смежные вопросы