在尝试安装QuickCheck时,我运行$ stack install QuickCheck。
$ stack install QuickCheck
$该命令暂停一秒钟,然后返回到shell,只打印一个空行。但是,这会使而不是看起来成功地安装了QuickCheck,因为运行$ ghc-pkg list无法找到包。
$ ghc-pkg list | grep QuickCheck
$而且,因为我无法在编译导入该模块的文件时导入Test.QuickCheck。
$ ghc ImportsQuickCheck.hs
[1 of 1] Compiling ImportsQuickCheck ( ImportsQuickCheck.hs, ImportsQuickCheck.o )
ImportsQuickCheck.hs:6:1: error:
Failed to load interface for ‘Test.QuickCheck’
Use -v to see a list of the files searched for.
$我从应该安装它的主文件夹运行stack install QuickCheck到全局安装,而不是从不应该安装的堆栈项目中运行。
为什么stack install QuickCheck 不能安装这个软件包?
为什么在失败时没有输出?
有更好的方法来管理我的全球软件包集吗?也许使用ghc-pkg而不是stack?我以前尝试过cabal-install,但遇到这样的问题比使用stack要多得多。
我用的是尼克斯17.03。
发布于 2017-08-10 03:50:46
简短的回答:你想要stack exec -- ghc-pkg describe QuickCheck
较长时间:
stack管理不同的GHC安装,以及多个级别的包数据库。因此,如果在命令行上运行ghc或ghc-pkg,这可能是与堆栈使用的不同版本的ghc。
ghc-pkg通过查看GHC_PACKAGE_PATH环境变量来获得要查看的包数据库列表。如果未设置此变量,则使用您的全局和用户包DBs。这些与堆栈使用的DBs不同(stack exec设置了GHC_PACKAGE_PATH变量)
另外,请注意,stack install与stack build是相同的。唯一的区别是它将目标可执行文件安装到~/.local/bin。Quickcheck没有可执行文件,因此不需要使用“安装”
https://stackoverflow.com/questions/45603977
复制相似问题