Установленные Cabal модули не будут импортироваться
Здесь есть несколько вещей, которые меня смущают, поэтому я постараюсь объяснить каждую из них как можно яснее.
Я пытался установить diagrams
пакет для haskell, используя клику. Я видел, что он предложил устанавливать пакеты, используя песочницы, вот что я и сделал. Что-то, что мне не понятно, это именно то, что песочница - я понимаю, что я могу инициализировать один с cabal sandbox init
и установить пакеты внутри него с cabal install
, но я не вижу, как использовать эти пакеты после их установки.
Затем я попытался скомпилировать тестовый скрипт с использованием ghc, что привело к следующей ошибке:
diagramstutorial.lhs:3:10:
Could not find module 'Diagrams.Prelude'
Use -v to see a list of the files searched for.
С похожей ошибкой для другого модуля, который должен был загрузить скрипт. Эти модули определенно включены в пакет диаграмм, и Cabal, кажется, рад, что пакет установлен правильно. Я ожидаю, что есть что-то простое, я просто не понимаю, но я не знаю, что это такое.
2 ответа
Я набрал
ghc --make diagramstutorial.lhs
скомпилировать
Это заставит GHC использовать обычную базу данных пакетов пользователя (то есть не изолированную). использование cabal exec -- ghc --make diagramstutorial.lhs
вместо этого, чтобы GHC работал в контексте вашей песочницы.
Вы также можете использовать GHCi в песочнице с cabal repl
, И, естественно, если / когда вы начнете готовить пакет для клики, все команды клики (cabal build
и т. д.) будет использовать песочницу, если вы находитесь в ее каталоге.
Что-то, что мне не понятно, это именно то, что песочница
Набор пакетов с сопровождающей базой данных, локальной для каталога. За пределами cabal.sandbox.config
в конфигурационном файле также есть скрытый каталог .cabal-sandbox
, в котором diagrams
и другие пакеты, которые вы установили, лежат.
Найдите каталог с песочницей и найдите
packages.conf.d
файл. Например,/home/user/.cabal-sandbox/x86_64-linux-ghc-7.8.4-packages.conf.d
Повторите ваши команды GHC с помощью
package-db
флаг:ghci -package-db /home/user/.cabal-sandbox/x86_64-linux-ghc-7.8.4-packages.conf.d --make diagramstutorial.lhs
Теперь все должно работать