找不到持久模块

时间:2013-12-19 13:16:03

标签: haskell persistent

我正在尝试使用http://hackage.haskell.org/package/persistent-1.2.3.0,但在通过“cabal install persistent”安装后,ghc找不到它的exposed-modules:

Prelude> import Database.Persist.Types

<no location info>:
    Could not find module `Database.Persist.Types'
    It is not a module in the current program, or in any known package.

ghc-pkg工作正常:

$ ghc-pkg find-module Database.Persist.Types
/var/lib/ghc/package.conf.d
/home/apsk/.ghc/x86_64-linux-7.6.3/package.conf.d
   persistent-1.2.3.0

我错过了什么或者这只是cabal / persistent / ghc的错误吗?我的ghc是7.6.3,顺便说一句。

另外,我试过没有效果:“ghc-pkg recache”; “ghc-pkg check”;安装以前的版本;使用和不使用“sudo”和/或“--global”重新安装。

3 个答案:

答案 0 :(得分:1)

  1. 检查您是否在使用沙箱,cabal-dev,hsenv以及其他任何可能影响ghc寻找依赖关系的内容。确保你使用的是ghc / ghci,而不是任何包装器,并且ghc / ghci没有别名的shell中的任何内容。

  2. 尝试明确指定package-db:

    ghci -package-db /home/apsk/.ghc/x86_64-linux-7.6.3/package.conf.d
    
  3. 如果您使用-v启动ghci,它将打印它所查看的(缓存)数据库,如下所示:

    % ghci -v 
    GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
    Glasgow Haskell Compiler, Version 7.6.3, stage 2 booted by GHC version 7.4.2
    Using binary package database: /opt/ghc763/lib/ghc-7.6.3/package.conf.d/package.cache
    Using binary package database: /home/feuerbach/.ghc/i386-linux-7.6.3/package.conf.d/package.cache
    

    确保那里列出了具有持久性的数据库。

答案 1 :(得分:1)

希望对某人有帮助。使用ghci -v我查看是否存在持久性,并看到了这一点:

package persistent-2.0.8-cec952b1a61645f47dbec3b0b0cbcef4 is unusable due to missing or recursive dependencies:  aeson-0.8.0.0-1bd8b5254a1dd30c0fe6acc346ad7de7 attoparsec-0.12.1.2-48393fcdbcf426085b696dc4409d9270 conduit-1.2.0.2-39f9cd0430ed7b7f4306899cbeb1ed83 monad-logger-0.3.7.2-3e6a80e9b3adf31497ff04514bdf2919 resource-pool-0.2.3.0-c02186641e7173f72887d5e65a646ac1 scientific-0.3.3.1-13e0eefbd7215e4503420c3d0a6fdb82 unordered-containers-0.2.5.0-147c3bb8f4a2da7d753455e75af30b92

所以我环顾四周(看到这个:Haskell Cabal: Mysterious missing or recursive dependencies),但没有找到一个好的答案。我确实发现了一个很好的here

  

$ ghc-pkg list Cabal

这显示我有两个该死的阴谋!一个在用户,一个在全球。啊。所以我能够ghc-pkg unregister --user Cabal-1.18.1.3 --force去除旧的。{1}}。然后cabal install cabal自动进入1.20,隐式进入没有任何标记的用户(替换为--global)。

答案 2 :(得分:0)

这个问题只发生在GHCi,对吧?你安装persistent后重启了GHCi吗? (也许有另一种让GHCi获取新安装包的方法,但我不知道。