如何让 ghci 查看我从 cabal 安装的软件包?

Posted

技术标签:

【中文标题】如何让 ghci 查看我从 cabal 安装的软件包?【英文标题】:How do I get ghci to see packages I installed from cabal? 【发布时间】:2011-03-07 08:10:44 【问题描述】:

我已经使用 cabal 安装了这样那样的包,我可以使用 cabal build 构建依赖于它的程序。但是当我在 ghci 中加载相同的程序时,ghci 抱怨它“找不到模块 `such-and-such'”。

我很惊讶这并没有“正常工作”。我如何告诉 ghci 在哪里可以找到我用 cabal 安装的包?

这是我的设置:我在 Mac OS X 10.6.3 上使用 GHC 6.10.4,cabal-install 版本 0.6.2 使用 Cabal 库的 1.6.0.3 版本。

【问题讨论】:

【参考方案1】:

使用cabal repl 要求 cabal 打开 GHCi 解释器,并为您的项目设置正确的设置。

【讨论】:

【参考方案2】:

你需要

ghci -package such-and-such

要仔细检查 such-and-such 是否对 GHC 真正可见,请运行 ghc-pkg list | grep such-and-such

【讨论】:

我更喜欢这个答案,因为我不想用暴露的包弄乱全局包命名空间。奖励回合: ghci中,如何动态添加包? :set -package haskell-src-meta 有效。我认为您可以使用:set 设置任何ghci/ghc 标志。喜欢:set -XTemplateHaskell【参考方案3】:

ghc-pkg list 在命令行会告诉你你安装的包是什么。安装的包可能会被隐藏,在这种情况下您可以使用ghc-pkg expose pkg-id 显示它。

【讨论】:

输出如下: bash-3.2$ ghc-pkg list lrucache /opt/local/lib/ghc-6.10.4/./package.conf: /Users/dominic/.ghc/ x86_64-darwin-6.10.4/package.conf: lrucache-1.0 我如何从那里转到包的位置?然后我使用ghci -i 是的! ghc-pkg register such-and-such 确实是必需的魔法。谢谢! 你可能想改变你的阴谋集团偏好来做全局寄存器。将 ~/.cabal/config 更改为 user-install: False.

以上是关于如何让 ghci 查看我从 cabal 安装的软件包?的主要内容,如果未能解决你的问题,请参考以下文章

在 ghci 中从 c 源调用动态库失败

我可以让 `cabal install` 使用多个内核吗?

通过 cabal (cabal-install) 在命令行中指定 ghc 选项,而无需编辑软件包的 .cabal 文件

cabal 安装 mime 失败

如何让 GHCi 加载 Opengl 包?

如何在 cabal 中查找已安装的包的反向依赖项