Haskell 无法引用包
我无法运行(或编译)简单脚本,因为据报道缺少Haskell 无法引用包,haskell,pandoc,Haskell,Pandoc,我无法运行(或编译)简单脚本,因为据报道缺少Text.Pandoc.JSON依赖项。这个问题与另一个问题类似: 以下是脚本: import Text.Pandoc.JSON pagebreakXml :: String pagebreakXml = "<w:p><w:r><w:br w:type=\"page\"/></w:r></w:p>" pagebreakBlock :: Block p
Text.Pandoc.JSON
依赖项。这个问题与另一个问题类似:
以下是脚本:
import Text.Pandoc.JSON
pagebreakXml :: String
pagebreakXml = "<w:p><w:r><w:br w:type=\"page\"/></w:r></w:p>"
pagebreakBlock :: Block
pagebreakBlock = RawBlock (Format "openxml") pagebreakXml
blockSwapper :: Block -> Block
blockSwapper (Para [Str "<div class=\"docxPageBreak\"></div>"]) = pagebreakBlock
blockSwapper blk = blk
main = toJSONFilter blockSwapper
安装大约需要20分钟
现在,当我尝试运行它时,我得到以下结果:
$ runghc -v docx-page-filter.hs
Glasgow Haskell Compiler, Version 8.8.3, stage 2 booted by GHC version 8.6.3
Using binary package database: /Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d/package.cache
package flags []
loading package database /Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d
wired-in package ghc-prim mapped to ghc-prim-0.5.3
wired-in package integer-wired-in mapped to integer-gmp-1.0.2.0
wired-in package base mapped to base-4.13.0.0
wired-in package rts mapped to rts
wired-in package template-haskell mapped to template-haskell-2.15.0.0
wired-in package ghc mapped to ghc-8.8.3
package flags []
loading package database /Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d
wired-in package ghc-prim mapped to ghc-prim-0.5.3
wired-in package integer-wired-in mapped to integer-gmp-1.0.2.0
wired-in package base mapped to base-4.13.0.0
wired-in package rts mapped to rts-1.0
wired-in package template-haskell mapped to template-haskell-2.15.0.0
wired-in package ghc mapped to ghc-8.8.3
*** Desugar:
*** Simplify [expr]:
!!! Simplify [expr]: finished in 0.18 milliseconds, allocated 0.056 megabytes
*** CorePrep [expr]:
!!! CorePrep [expr]: finished in 3.22 milliseconds, allocated 1.706 megabytes
*** ByteCodeGen [Ghci1]:
!!! ByteCodeGen [Ghci1]: finished in 0.11 milliseconds, allocated 0.029 megabytes
Loading package ghc-prim-0.5.3 ... linking ... done.
Loading package integer-gmp-1.0.2.0 ... linking ... done.
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv.dylib
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name liblibiconv.dylib
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name iconv.lib
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv.lib
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv.dll.a
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name iconv.dll.a
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv.a
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name iconv.a
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name iconv
Loading package base-4.13.0.0 ... linking ... done.
Search directories (user):
Search directories (gcc):
*** Desugar:
*** Simplify [expr]:
!!! Simplify [expr]: finished in 0.07 milliseconds, allocated 0.044 megabytes
*** CorePrep [expr]:
!!! CorePrep [expr]: finished in 0.03 milliseconds, allocated 0.014 megabytes
*** ByteCodeGen [Ghci1]:
!!! ByteCodeGen [Ghci1]: finished in 0.05 milliseconds, allocated 0.028 megabytes
*** Desugar:
*** Simplify [expr]:
!!! Simplify [expr]: finished in 0.10 milliseconds, allocated 0.061 megabytes
*** CorePrep [expr]:
!!! CorePrep [expr]: finished in 0.04 milliseconds, allocated 0.022 megabytes
*** ByteCodeGen [Ghci1]:
!!! ByteCodeGen [Ghci1]: finished in 0.11 milliseconds, allocated 0.065 megabytes
*** Chasing dependencies:
Chasing modules from:
!!! Chasing dependencies: finished in 0.04 milliseconds, allocated 0.021 megabytes
Stable obj: {}
Stable BCO: {}
unload: retaining objs []
unload: retaining bcos []
Ready for upsweep []
Upsweep completely successful.
*** Deleting temp files:
Deleting:
*** Chasing dependencies:
Chasing modules from: *docx-page-filter.hs
!!! Chasing dependencies: finished in 0.60 milliseconds, allocated 0.334 megabytes
Stable obj: {}
Stable BCO: {}
unload: retaining objs []
unload: retaining bcos []
Ready for upsweep
[NONREC
ModSummary {
ms_hs_date = 2020-07-01 09:51:29.83381948 UTC
ms_mod = Main,
ms_textual_imps = [(Nothing, Prelude), (Nothing, Text.Pandoc.JSON)]
ms_srcimps = []
}]
*** Deleting temp files:
Deleting:
compile: input file docx-page-filter.hs
*** Checking old interface for Main (use -ddump-hi-diffs for more details):
[1 of 1] Compiling Main ( docx-page-filter.hs, interpreted )
*** Parser [Main]:
!!! Parser [Main]: finished in 0.35 milliseconds, allocated 0.332 megabytes
*** Renamer/typechecker [Main]:
!!! Renamer/typechecker [Main]: finished in 1.57 milliseconds, allocated 0.021 megabytes
docx-page-filter.hs:1:1: error:
Could not find module ‘Text.Pandoc.JSON’
Locations searched:
Text/Pandoc/JSON.hs
Text/Pandoc/JSON.lhs
Text/Pandoc/JSON.hsig
Text/Pandoc/JSON.lhsig
|
1 | import Text.Pandoc.JSON
| ^^^^^^^^^^^^^^^^^^^^^^^
Upsweep partially successful.
*** Deleting temp files:
Deleting:
Failed, no modules loaded.
*** Deleting temp files:
Deleting:
*** Deleting temp dirs:
Deleting:
$
当我试图通过ghc--make-v docx page filter.hs编译它时,我得到了类似的输出
我注意到可能有帮助的事情:
- 上面的输出包含以下行:
Search directories (user):
Search directories (gcc):
这是否意味着安装的库不在编译器的搜索路径中?是否可以手动告诉编译器在哪里查找包
- 以下命令不输出任何内容:
$ cabal list --installed | grep pandoc
$
$ ghc-pkg list | grep pandoc
$
但是,运行以下命令会显示pandoc
:
$ ls -l /Users/eugene/.cabal/store/ghc-8.8.3/ | grep pndc
drwxr-xr-x 5 eugene staff 160 Jul 1 15:07 pndc-2.10-1cd05aed
drwxr-xr-x 5 eugene staff 160 Jul 1 15:07 pndc-2.10-e61ae373
drwxr-xr-x 5 eugene staff 160 Jul 1 14:52 pndc-typs-1.21-39168129
$
- 尝试安装或重新安装
pandoc
会导致无操作:
$ cabal install pandoc
Resolving dependencies...
Up to date
Symlinking 'pandoc'
$
$ cabal install pandoc --reinstall
Resolving dependencies...
Up to date
Symlinking 'pandoc'
$
有人能发现我做错了什么吗?我不需要cabal.project
文件或任何东西,我需要的是编译一个单独的文件并执行它。但我可以尝试探索cabal.project
几轮谷歌搜索让我意识到,为了指定包的路径,必须使用选项
就我而言,为了编译文件,我必须这样做:
ghc --make -v docx-page-filter.hs -package-db=/Users/eugene/.cabal/store/ghc-8.8.3/package.db
关于这一问题的更多信息,请在这里对一个问题做出极好的回答:
ghc --make -v docx-page-filter.hs -package-db=/Users/eugene/.cabal/store/ghc-8.8.3/package.db