随着 cabal-3 的发布,来自 Hackage 的软件包被安装在编译器一无所知的新ghc
位置ghc-pkg
。换句话说,软件包已安装但未注册ghc
. Ghci
, ghc
,ghc-pkg
不能工作。
例如,
cabal install safe --lib
创建文件 t1.hs
import Safe
t1 = tailMay [1,2,3]
我们试试看:
> ghci t1.hs
GHCi, version 8.10.2: https://www.haskell.org/ghc/:? for help
[1 of 1] Compiling Main (t1.hs, interpreted)
t1.hs: 1: 1: error:
Could not find module `Safe '
Use -v (or `: set -v` in ghci) to see a list of the files searched for.
|
1 | import Safe
| ^^^^^^^^^^^
Failed, no modules loaded.
此处描述了此错误
https://github.com/haskell/cabal/issues/6262
和这里
https://gitlab.haskell.org/ghc/ghc/-/issues/17341
我用作设置系统变量的临时解决方案
GHC_PACKAGE_PATH=C:\Users\me\AppData\Roaming\cabal\store\ghc-8.10.2\package.db;
(Windwos 10,巧克力的 haskell-dev)
通过 在 Windows 上,使用 cabal 安装的软件包似乎在 ghc/ghci 中不可用
但随着更新,我将不得不手动更改此系统变量。
这个问题有没有更优雅的解决方案?
PS 不幸的是,这个解决方案(通过 GHC 的环境变量 GHC_PACKAGE_PATH)与 Cabal 不兼容 :(