[英]Haskell - could not find module 'Test.QuickCheck'
您可以嘗試在包含您的項目的本地目錄中創建包環境,如下所示:
c:\Users\...\ex1haskell> cabal install --lib --package-env . QuickCheck
這應該.ghc.environment.xxx
在ex1haskell
創建一個.ghc.environment.xxx
形式的文件,希望可以通過runhaskell
/ ghci
/ ghc
調用來獲取。
在ghci
會話中,啟動時出現以下消息是環境正在被拾取的標志:
從...加載的包環境
如果未明確給出--package-env
位置,則使用默認位置。 根據文檔:
默認情況下,它正在寫入 ~/.ghc/$ARCH-$OS-$GHCVER/environments/default 中的全局環境。 v2-install 提供了 --package-env 標志來控制修改哪些環境。
但似乎runhaskell
在該默認位置找到環境文件時遇到問題。
注意。 創建包環境時,可以同時指定多個包,如下所示:
cabal install --lib --package-env . QuickCheck random aeson transformers
此外,包環境只是文本文件,因此可以隨意刪除和重新創建本地環境。 實際的包二進制文件駐留在別處,可能會被cabal
重用。
共同的環境
如果/當實際工具不同時很難調試,所以讓我們首先獲得一個統一的設置。 我將使用 docker 來獲取 GHC 8 和 Cabal 3.x:
docker run --rm -it haskell bash
理解這不是任意的,甚至不是先發制人的。 您所展示的 - cabal install --lib ...
和runhaskell ...
確實適用於健全的工具安裝。 您可能有一個錯誤的安裝或一個具有不同行為的舊版本工具。
使用 runhaskell 運行單個文件
現在我們需要一個項目:
root@8a934c302dba:/# mkdir Ex1
root@8a934c302dba:/# cd Ex1
root@8a934c302dba:/Ex1# cat <<EOF >Main.hs
> import Test.QuickCheck
>
> main :: IO ()
> main = print =<< (generate arbitrary :: IO Int)
> EOF
和測試失敗:
root@8a934c302dba:/Ex1# runhaskell Main.hs
Main.hs:1:1: error:
Could not find module `Test.QuickCheck'
Use -v (or `:set -v` in ghci) to see a list of the files searched for.
|
1 | import Test.QuickCheck
並安裝庫:
root@8a934c302dba:/Ex1# cabal update && cabal install --lib QuickCheck
並成功運行:
root@8a934c302dba:/Ex1# runhaskell Main.hs
15
所以我上面的評論是錯誤的——我們不需要明確列出包,因為它在安裝后已經暴露了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.